/* ==================================================
   ELEFPI — WOOCOMMERCE — MIGRATION PRUDENTE (2026-10-21)
   Theme enfant ELEFPI | Fichier : assets/css/elefpi-woocommerce.css

   Contient : CSS produit valide V9 (sections 2-9)
              + regles panier actuellement visibles.
   Ne contient PAS les liens legaux globaux : les laisser
   dans le CSS additionnel pour toutes les pages du site.
   Pas de changement de PHP, HTML, paiement ou abonnement.

   PHASE 1 : deposer ce fichier sans supprimer l'ancien CSS.
   PHASE 2 : verifier chargement et rendu en situation reelle.
   PHASE 3 : retirer les doublons du CSS additionnel.
   ================================================== */

/* ==================================================
   2. FICHES PRODUITS — ESPACEMENT DES ONGLETS
   ================================================== */

.single-product .woocommerce-tabs {
  margin-top: 48px;
}

.single-product .woocommerce-tabs ul.tabs {
  margin-bottom: 32px;
}

.single-product .woocommerce-tabs ul.tabs > li > a {
  font-size: 13px;
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: 0.025em;
}

/* ==================================================
   3. DESCRIPTION LONGUE — LARGEUR ET TYPOGRAPHIE
   Typographie du panneau Avis non modifiee.
   ================================================== */

.single-product #tab-description {
  box-sizing: border-box;
  width: 100%;
  max-width: 55rem;
  margin-inline: auto;
  color: #0F0E17;
  font-size: 1rem;
  font-weight: 400;
  line-height: 1.4;
  overflow-wrap: break-word;
}

.single-product #tab-description p {
  margin: 0 0 1.25rem;
  color: inherit;
  font-size: inherit;
  line-height: inherit;
}

.single-product #tab-description h2,
.single-product #tab-description h3 {
  color: #14243b;
  font-family: inherit;
  font-style: normal;
  font-weight: 600;
  letter-spacing: -0.015em;
  text-transform: none;
}

.single-product #tab-description h2 {
  margin: 2.75rem 0 1rem;
  color: #6713D2;
  font-size: 28px;
  font-weight: 700;
  line-height: 1.4;
  -webkit-text-fill-color: currentColor;
}

/* Les mots en gras dans un H2 gardent la typographie du titre. */

.single-product #tab-description h2 strong,
.single-product #tab-description h2 b {
  color: inherit;
  font-weight: inherit;
}

/* Degrade sur le vrai texte : repli uni si non pris en charge.
   Le fond uni sert aussi de repli si le degrade ne se dessine pas. */

@supports (background-clip: text) or (-webkit-background-clip: text) {
  .single-product #tab-description h2 {
    background-color: #6713D2;
    background-image: linear-gradient(0deg, #CC208E 0%, #6713D2 100%);
    background-repeat: no-repeat;
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    -webkit-text-fill-color: transparent;
    text-shadow: none;
  }
}

/* Impression et contraste force : titres lisibles sans fond colore. */

@media print {
  .single-product #tab-description h2 {
    background: none;
    color: #0F0E17;
    -webkit-text-fill-color: currentColor;
  }
}

@media (forced-colors: active) {
  .single-product #tab-description h2 {
    background: none;
    color: CanvasText;
    -webkit-text-fill-color: currentColor;
  }
}

.single-product #tab-description h3 {
  margin: 2rem 0 0.75rem;
  font-size: 1.25rem;
  line-height: 1.45;
}

.single-product #tab-description > :first-child {
  margin-top: 0;
}

.single-product #tab-description > :last-child {
  margin-bottom: 0;
}

.single-product #tab-description strong {
  color: #0F0E17;
  font-weight: 600;
}

/* Listes : marqueurs natifs conserves. */

.single-product #tab-description ul {
  margin: 0.5rem 0 1.75rem;
  padding-inline-start: 1.25rem;
  list-style: disc outside;
}

.single-product #tab-description ul > li {
  margin: 0 0 0.875rem;
  padding-inline-start: 0.375rem;
  font-size: inherit;
  line-height: inherit;
}

.single-product #tab-description ul > li:last-child {
  margin-bottom: 0;
}

.single-product #tab-description ul > li::marker {
  color: #005bbb;
  font-size: 0.8em;
}

/* Liens dans la description uniquement. */

.single-product #tab-description a {
  color: #005bbb;
  text-decoration: underline;
  text-underline-offset: 3px;
  text-decoration-thickness: 1px;
}

.single-product #tab-description a:focus-visible {
  outline: 2px solid #005bbb;
  outline-offset: 3px;
}

/* Note finale de la fiche actuelle. */

.single-product #tab-description > p:last-child > em:only-child {
  display: block;
  margin-top: 1.75rem;
  padding-top: 1.25rem;
  border-top: 1px solid #e2e8f0;
  color: #0F0E17;
  font-size: 0.9375rem;
  font-style: normal;
  line-height: inherit;
}

/* Description courte : meme couleur et interlignage que le texte long.
   Les regles ciblees du prix et du badge, plus bas, sont conservees. */

.single-product .entry-summary .woocommerce-product-details__short-description {
  color: #0F0E17;
  line-height: 1.4;
}

.single-product .entry-summary .woocommerce-product-details__short-description :where(p, li) {
  color: inherit;
  line-height: inherit;
}

.single-product .entry-summary .woocommerce-product-details__short-description strong {
  color: inherit;
}

/* ==================================================
   3B. TITRE DU PRODUIT — TYPOGRAPHIE HARMONISEE
   Le H1 et son texte restent geres par WooCommerce.
   Aucune police externe ajoutee.
   ================================================== */

.single-product .entry-summary .product_title {
  color: #14243b;
  font-family: inherit;
  font-size: 1.75rem;
  font-style: normal;
  font-weight: 600;
  line-height: 1.3;
  letter-spacing: -0.015em;
  text-transform: none;
  overflow-wrap: break-word;
}

/* ==================================================
   4. MOBILE — TITRE, RESUME ET RYTHME DE LECTURE
   Geometrie mobile conservee ; typographie V8 harmonisee.
   ================================================== */

@media (max-width: 768px) {

  /* Titre produit : police du texte, graisse moderee. */

  .single-product .entry-summary .product_title {
    margin: 0 0 0.75rem;
    color: #14243b;
    font-family: inherit;
    font-size: 22px;
    font-style: normal;
    font-weight: 600;
    line-height: 1.3;
    letter-spacing: -0.015em;
    text-transform: none;
    overflow-wrap: break-word;
  }

  .single-product .entry-summary > .price {
    margin: 0 0 1.25rem;
    font-size: 1.25rem;
    font-weight: 600;
    line-height: 1.45;
  }

  .single-product .entry-summary .woocommerce-product-details__short-description {
    margin-top: 0;
    margin-bottom: 1.25rem;
    color: #0F0E17;
    font-size: 1rem;
    line-height: 1.3;
    overflow-wrap: break-word;
  }

  .single-product .entry-summary .woocommerce-product-details__short-description p {
    margin: 0 0 1rem;
    font-size: inherit;
    line-height: inherit;
  }

  .single-product .entry-summary .woocommerce-product-details__short-description p:last-child {
    margin-bottom: 0;
  }

  .single-product .entry-summary .woocommerce-product-details__short-description strong {
    color: #0F0E17;
    font-weight: 600;
  }

  /* Description longue : texte lisible, espaces resserres. */

  .single-product #tab-description {
    margin-top: 0;
    padding-top: 0;
    font-size: 1rem;
    line-height: 1.3;
  }

  .single-product #tab-description p {
    margin-bottom: 1rem;
  }

  .single-product #tab-description h2 {
    margin: 2rem 0 0.875rem;
    font-size: 22px;
    line-height: 1.3;
  }

  .single-product #tab-description h3 {
    margin: 1.5rem 0 0.75rem;
    font-size: 1.125rem;
  }

  .single-product #tab-description ul {
    margin-bottom: 1.5rem;
  }

  .single-product #tab-description ul > li {
    margin-bottom: 0.75rem;
    line-height: inherit;
  }

  .single-product #tab-description > :first-child {
    margin-top: 0;
  }

  .single-product #tab-description > :last-child {
    margin-bottom: 0;
  }

  /* Onglets mobiles : centrage du CONTENEUR et des blocs.
     La largeur native Blocksy (is-width-constrained) est conservee.
     Specificite renforcee face aux styles type-1 / type-2 du theme.
     Aucun changement d'affichage des panneaux Description / Avis. */

  .single-product .woocommerce-tabs {
    margin-top: 28px;
    padding-top: 0;
  }

  .single-product.woocommerce div.product div.woocommerce-tabs > ul.tabs {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    align-items: stretch;
    justify-content: center;
    gap: 0;
    box-sizing: border-box;
    max-width: 100%;
    margin-block: 0 1.5rem;
    margin-inline: auto;
    padding: 0;
    list-style: none;
    border-top: 0;
    border-bottom: 1px solid #e2e8f0;
  }

  .single-product.woocommerce div.product div.woocommerce-tabs > ul.tabs > li {
    display: flex;
    float: none;
    flex: 1 1 9rem;
    width: auto;
    min-width: 0;
    max-width: 100%;
    margin: 0;
    padding: 0;
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
  }

  .single-product.woocommerce div.product div.woocommerce-tabs > ul.tabs::before,
  .single-product.woocommerce div.product div.woocommerce-tabs > ul.tabs::after,
  .single-product.woocommerce div.product div.woocommerce-tabs > ul.tabs > li::before,
  .single-product.woocommerce div.product div.woocommerce-tabs > ul.tabs > li::after {
    content: none;
  }

  .single-product.woocommerce div.product div.woocommerce-tabs > ul.tabs > li > a {
    display: flex;
    box-sizing: border-box;
    align-items: center;
    justify-content: center;
    width: 100%;
    min-height: 48px;
    padding: 12px 10px;
    border-bottom: 2px solid transparent;
    background: transparent;
    color: #526174;
    font-size: 0.8125rem;
    font-weight: 600;
    line-height: 1.4;
    letter-spacing: 0;
    text-align: center;
    text-transform: none;
    text-decoration: none;
    white-space: normal;
    overflow-wrap: break-word;
  }

  .single-product.woocommerce div.product div.woocommerce-tabs > ul.tabs > li.active > a {
    border-bottom-color: #005bbb;
    background: #f3f6fa;
    color: #005bbb;
  }

  .single-product.woocommerce div.product div.woocommerce-tabs > ul.tabs > li > a:focus-visible {
    outline: 2px solid #005bbb;
    outline-offset: -3px;
  }
}

/* ==================================================
   5. ELEFPI-WP PRO — PRIX ET PERIODICITE REUNIS
   Description courte associee : version 4.

   Portee : produit 1771, seulement si le prix WooCommerce
   et le libelle HTML elefpi-billing-period sont presents.
   Le montant WooCommerce reste intact et dynamique.
   Aucun texte commercial genere par CSS, aucun JS.
   Aucun reglage d'abonnement ou de paiement modifie.
   ================================================== */

/* La grille ne s'active que pour la nouvelle structure. */

.single-product #product-1771 .entry-summary:where(:has(> .price):has(> .woocommerce-product-details__short-description > .elefpi-billing-period)) {
  display: grid;
  grid-template-columns: max-content minmax(0, 1fr);
  column-gap: 0.5rem;
  row-gap: 0;
  align-items: start;
  align-content: start;
  min-width: 0;
}

/* Les autres elements (panier, separateurs, metadonnees)
   restent sur toute la largeur, apres le resume. */

.single-product #product-1771 .entry-summary:where(:has(> .price):has(> .woocommerce-product-details__short-description > .elefpi-billing-period)) > * {
  grid-column: 1 / -1;
  min-width: 0;
}

/* Titre : selecteur cible, sans modifier les autres pages. */

.single-product #product-1771 .entry-summary:has(.elefpi-billing-period) > .product_title {
  grid-column: 1 / -1;
  margin: 0 0 0.875rem;
  color: #14243b;
  font-family: inherit;
  font-size: 1.75rem;
  font-style: normal;
  font-weight: 600;
  line-height: 1.3;
  letter-spacing: -0.015em;
  text-transform: none;
  overflow-wrap: break-word;
}

.single-product #product-1771 .entry-summary:has(.elefpi-billing-period) > .woocommerce-product-rating {
  grid-column: 1 / -1;
  margin: 0 0 0.875rem;
}

/* Montant WooCommerce : ni masque, ni recopie. */

.single-product #product-1771 .entry-summary:has(.elefpi-billing-period) > .price {
  grid-column: 1;
  align-self: baseline;
  justify-self: start;
  width: auto;
  margin: 0;
  padding: 0;
  color: #14243b;
  font-family: inherit;
  font-size: 1.75rem;
  font-style: normal;
  font-weight: 600;
  line-height: 1.25;
  letter-spacing: -0.015em;
}

/* Le div de description ne porte pas de semantique propre.
   Ses paragraphes restent dans le HTML et dans l'ordre de
   lecture : montant, periodicite, engagement, presentation. */

.single-product #product-1771 .entry-summary:has(> .price) > .woocommerce-product-details__short-description:has(> .elefpi-billing-period) {
  display: contents;
}

/* Periodicite en vrai texte HTML, sur la ligne du prix. */

.single-product #product-1771 .entry-summary .woocommerce-product-details__short-description > p.elefpi-billing-period {
  grid-column: 2;
  align-self: baseline;
  justify-self: start;
  margin: 0;
  padding: 0;
  color: #14243b;
  font-family: inherit;
  font-size: 1.5rem;
  font-style: normal;
  font-weight: 600;
  line-height: 1.25;
  letter-spacing: -0.01em;
  text-transform: none;
  white-space: normal;
}

/* Engagement : une etiquette compacte juste sous le tarif. */

.single-product #product-1771 .entry-summary .woocommerce-product-details__short-description > p.elefpi-billing-commitment {
  grid-column: 1 / -1;
  justify-self: start;
  width: fit-content;
  max-width: 100%;
  box-sizing: border-box;
  margin: 0.5rem 0 1.5rem;
  padding: 0.25rem 0.625rem;
  border: 1px solid #d7e7f8;
  border-radius: 5px;
  background: #edf5ff;
  color: #005bbb;
  font-family: inherit;
  font-size: 0.8125rem;
  font-style: normal;
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: 0;
  text-transform: none;
}

/* Texte commercial : contenu conserve, rythme maitrise. */

.single-product #product-1771 .entry-summary .elefpi-summary-copy {
  grid-column: 1 / -1;
  min-width: 0;
  margin: 0 0 1.5rem;
  color: #0F0E17;
  font-size: 1rem;
  font-weight: 400;
  line-height: 1.4;
  overflow-wrap: break-word;
}

.single-product #product-1771 .entry-summary .elefpi-summary-copy > p {
  margin: 0 0 1.125rem;
  font-size: inherit;
  line-height: inherit;
}

.single-product #product-1771 .entry-summary .elefpi-summary-copy > p:last-child {
  margin-bottom: 0;
}

.single-product #product-1771 .entry-summary .elefpi-summary-copy strong {
  color: #0F0E17;
  font-weight: 600;
}

@media (max-width: 767px) {
  .single-product #product-1771 .entry-summary:has(.elefpi-billing-period) > .product_title {
    font-size: 1.625rem;
  }

  .single-product #product-1771 .entry-summary:has(.elefpi-billing-period) > .price {
    font-size: 1.625rem;
  }

  .single-product #product-1771 .entry-summary .woocommerce-product-details__short-description > p.elefpi-billing-period {
    font-size: 1.375rem;
  }

  .single-product #product-1771 .entry-summary .elefpi-summary-copy {
    line-height: 1.3;
  }
}

/* ==================================================
   6. ELEFPI-WP PRO — ACTIONS PANIER CENTREES
   Portee : fiche produit 1771, zone d'achat principale.
   Le bouton principal et son comportement WooCommerce
   restent intacts. Le lien natif Voir le panier, ajoute
   apres succes, devient une action secondaire dessous.
   Aucun faux etat panier, aucune suppression de bouton,
   aucun changement du paiement ou de la quantite.
   ================================================== */

.single-product #product-1771 .entry-summary .ct-product-add-to-cart form.cart .ct-cart-actions {
  display: flex;
  flex-direction: column;
  flex-wrap: nowrap;
  align-items: center;
  justify-content: center;
  gap: 0.625rem;
  width: 100%;
  min-width: 0;
}

.single-product #product-1771 .entry-summary .ct-product-add-to-cart form.cart .ct-cart-actions > .single_add_to_cart_button {
  flex: 0 1 auto;
  align-self: center;
  box-sizing: border-box;
  width: 100%;
  max-width: 25rem;
  min-width: 0;
  margin-inline: auto;
  text-align: center;
}

/* Lien natif : pas un deuxieme bouton de meme importance. */

.single-product #product-1771 .entry-summary .ct-product-add-to-cart form.cart .ct-cart-actions > a.added_to_cart.wc-forward {
  display: inline-flex;
  flex: 0 1 auto;
  align-self: center;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  width: auto;
  min-width: 0;
  max-width: 100%;
  min-height: 2.75rem;
  margin: 0 auto;
  padding: 0.375rem 0.75rem;
  border: 0;
  border-radius: 0;
  box-shadow: none;
  background: transparent;
  color: #334155;
  font-family: inherit;
  font-size: 0.875rem;
  font-weight: 500;
  line-height: 1.4;
  text-align: center;
  text-decoration: underline;
  text-underline-offset: 3px;
  text-decoration-thickness: 1px;
  white-space: normal;
  overflow-wrap: break-word;
}

.single-product #product-1771 .entry-summary .ct-product-add-to-cart form.cart .ct-cart-actions > a.added_to_cart.wc-forward:hover {
  background: transparent;
  color: #005bbb;
}

.single-product #product-1771 .entry-summary .ct-product-add-to-cart form.cart .ct-cart-actions > a.added_to_cart.wc-forward:focus-visible {
  outline: 2px solid #005bbb;
  outline-offset: 2px;
}

@media (max-width: 767px) {
  .single-product #product-1771 .entry-summary .ct-product-add-to-cart form.cart .ct-cart-actions > .single_add_to_cart_button {
    max-width: 100%;
  }
}


/* ==================================================
   7. FICHES PRODUITS — ESPACE SOUS LE HEADER
   Cible : conteneur principal Blocksy avec espacement haut.
   Uniquement padding-top : l'espacement du bas, les marges
   laterales, le fil d'Ariane et son espacement inferieur
   restent inchanges. Aucune marge negative.
   ================================================== */

.single-product #main > [data-vertical-spacing*="top"] {
  padding-top: 28px;
}

@media (max-width: 767px) {
  .single-product #main > [data-vertical-spacing*="top"] {
    padding-top: 18px;
  }
}


/* ==================================================
   8. ELEFPI-WP PRO — ESPACE AVANT LES ONGLETS, BUREAU
   Seule la limite superieure du conteneur est ajustee.
   Annule la marge de 48 px de la section 2 pour ce produit
   sur grand ecran et definit un padding superieur de 32 px.
   Les espacements SOUS les onglets restent inchanges.
   Aucun effet sous 1000 px, aucune marge negative.
   ================================================== */

@media screen and (min-width: 1000px) {
  .single-product #product-1771 .woocommerce-tabs {
    margin-top: 0;
    padding-top: 32px;
  }
}


/* ==================================================
   9. TITRE H1 DU PRODUIT — DEGRADE DE MARQUE
   Meme degrade que les H2 de la description.
   Aucun changement de police, taille, graisse ou marge.
   Le second selecteur couvre la regle specifique du
   produit 1771, sans recourir a !important.
   ================================================== */

.single-product .entry-summary h1.product_title,
.single-product #product-1771 .entry-summary:has(.elefpi-billing-period) > h1.product_title {
  color: #6713D2;
  -webkit-text-fill-color: currentColor;
}

@supports (background-clip: text) or (-webkit-background-clip: text) {
  .single-product .entry-summary h1.product_title,
  .single-product #product-1771 .entry-summary:has(.elefpi-billing-period) > h1.product_title {
    background-color: #6713D2;
    background-image: linear-gradient(0deg, #CC208E 0%, #6713D2 100%);
    background-repeat: no-repeat;
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    -webkit-text-fill-color: transparent;
    text-shadow: none;
  }
}

/* Lisibilite conservee a l'impression et en contraste force. */

@media print {
  .single-product .entry-summary h1.product_title,
  .single-product #product-1771 .entry-summary:has(.elefpi-billing-period) > h1.product_title {
    background: none;
    color: #0F0E17;
    -webkit-text-fill-color: currentColor;
  }
}

@media (forced-colors: active) {
  .single-product .entry-summary h1.product_title,
  .single-product #product-1771 .entry-summary:has(.elefpi-billing-period) > h1.product_title {
    background: none;
    color: CanvasText;
    -webkit-text-fill-color: currentColor;
  }
}

/* ==================================================
   10. ELEFPI STOREFRONT — CATALOGUE, CART AND CHECKOUT
   Classic WooCommerce templates verified with Blocksy 2.1.60.
   Product-page rules above are retained without changes.
   No generated commercial copy, calculation or payment changes.
   ================================================== */

:is(.woocommerce-shop, .woocommerce-cart, .woocommerce-checkout) #main {
  --elefpi-ink: #0F0E17;
  --elefpi-muted: #62586c;
  --elefpi-line: #e7e1ec;
  --elefpi-pink: #E83CAA;
  --elefpi-purple: #6713D2;
  --theme-button-border-radius: 5px;
  --theme-form-field-border-radius: 5px;
  --theme-form-field-border-width: 1px;
  --theme-form-field-border-initial-color: #96899f;
  --theme-form-field-border-focus-color: #6713D2;
  --theme-form-field-height: 48px;
  color: var(--elefpi-ink);
  line-height: 1.4;
}

:is(.woocommerce-cart, .woocommerce-checkout) #main > .ct-container-full {
  width: min(1184px, calc(100% - 48px));
  max-width: none;
  margin-inline: auto;
  padding-block: 40px 56px;
}

/* The title gradient uses the same vertical direction as the product page. */
:is(.woocommerce-shop, .woocommerce-cart, .woocommerce-checkout) #main .page-title,
.woocommerce-cart #main .cart_totals h2 {
  margin-block: 0 24px;
  color: #6713D2;
  font-family: inherit;
  font-size: 28px;
  font-weight: 700;
  line-height: 1.4;
  letter-spacing: -0.02em;
  text-transform: none;
}

@supports (background-clip: text) or (-webkit-background-clip: text) {
  :is(.woocommerce-shop, .woocommerce-cart, .woocommerce-checkout) #main .page-title,
  .woocommerce-shop #main .elefpi-shop-intro h2,
  .woocommerce-shop #main .woocommerce-loop-product__title,
  .woocommerce-cart #main .cart_totals h2 {
    background-color: #6713D2;
    background-image: linear-gradient(0deg, #CC208E 0%, #6713D2 100%);
    background-repeat: no-repeat;
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    -webkit-text-fill-color: transparent;
  }
}

/* Catalogue: a compact editorial heading and cards which scale with the range. */
.woocommerce-shop #main > .hero-section {
  padding-block: 36px;
  border-bottom: 1px solid var(--elefpi-line);
  background: #faf8fc;
}

.woocommerce-shop #main > .hero-section .entry-header {
  width: min(880px, calc(100% - 48px));
  max-width: none;
  min-height: 0;
  margin-inline: auto;
  padding: 0;
  text-align: start;
}

.woocommerce-shop #main > .hero-section .page-title {
  margin: 0;
}

.woocommerce-shop #main > .ct-container {
  width: min(1184px, calc(100% - 48px));
  padding-block: 32px 56px;
}

.woocommerce-shop #main .woo-listing-top:empty { margin: 0; }

.woocommerce-shop #main .elefpi-shop-intro {
  max-width: 880px;
  margin: 0 auto;
}

.woocommerce-shop #main .elefpi-shop-intro h2 {
  margin: 0 0 12px;
  color: var(--elefpi-purple);
  font-family: inherit;
  font-size: 28px;
  font-weight: 700;
  line-height: 1.35;
  letter-spacing: -0.02em;
}

.woocommerce-shop #main .elefpi-shop-intro p {
  max-width: 64ch;
  margin: 0;
  color: var(--elefpi-ink);
  font-size: 16px;
  line-height: 1.65;
}

.woocommerce-shop #main .products {
  --shop-columns: 3;
  display: grid;
  grid-template-columns: repeat(var(--shop-columns), minmax(0, 1fr));
  gap: 24px;
}

.woocommerce-shop #main .products > .product {
  box-sizing: border-box;
  min-width: 0;
  padding: 20px;
  border: 1px solid var(--elefpi-line);
  border-radius: 5px;
  background: #fff;
  box-shadow: none;
  text-align: start;
}

.woocommerce-shop #main .products > .product > figure {
  overflow: hidden;
  margin: 0 0 20px;
  border-radius: 3px;
  background: #f7f4fa;
}

.woocommerce-shop #main .products > .product > figure img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}

.woocommerce-shop #main .products > .product > figure .ct-media-container {
  width: 100%;
  aspect-ratio: 1;
}

.woocommerce-shop #main .woocommerce-loop-product__title {
  margin-block: 0 10px;
  color: var(--elefpi-ink);
  font-size: 20px;
  font-weight: 700;
  line-height: 1.35;
  letter-spacing: -0.015em;
  overflow-wrap: break-word;
}

.woocommerce-shop #main .woocommerce-loop-product__title a {
  color: inherit;
}

.woocommerce-shop #main .products .price {
  margin-block: 0 12px;
  color: var(--elefpi-ink);
  font-size: 20px;
  font-weight: 600;
  line-height: 1.4;
  font-variant-numeric: tabular-nums;
}

.woocommerce-shop #main .products .entry-meta {
  margin-block: 0 20px;
  color: var(--elefpi-muted);
  font-size: 12px;
  line-height: 1.5;
}

.woocommerce-shop #main .products .ct-woo-card-actions {
  justify-content: flex-start;
  margin-top: auto;
}

/* One product is displayed as a feature, using its existing image and details. */
.woocommerce-shop #main .products:has(> li.product:only-of-type) {
  grid-template-columns: minmax(0, 1fr);
  max-width: 880px;
  margin-inline: auto;
}

.woocommerce-shop #main .products > li.product:only-of-type {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  grid-template-rows: minmax(0, 1fr) auto auto minmax(0, 1fr);
  column-gap: 36px;
  align-content: center;
  align-items: start;
  padding: 28px;
}

.woocommerce-shop #main .products > li.product:only-of-type > figure {
  grid-column: 1;
  grid-row: 1 / span 4;
  align-self: center;
  margin: 0;
}

.woocommerce-shop #main .products > li.product:only-of-type > :not(figure) {
  grid-column: 2;
}

.woocommerce-shop #main .products > li.product:only-of-type .woocommerce-loop-product__title {
  align-self: end;
  margin-top: 0;
  font-size: 26px;
}

.woocommerce-shop #main .products > li.product:only-of-type .ct-woo-card-actions {
  align-self: start;
  margin-top: 0;
}

/* Native Blocksy wrappers: one frame around the totals, never an extra box. */
.woocommerce-cart #main .ct-woocommerce-cart-form {
  grid-template-columns: minmax(0, 1fr) minmax(300px, 360px);
  gap: 32px;
  align-items: start;
}

.woocommerce-cart #main .ct-woocommerce-cart-form .cart_totals {
  --cart-totals-border: 1px solid #E83CAA;
  --cart-totals-border-radius: 5px;
  --cart-totals-padding: 24px;
  min-width: 0;
  background: #fff;
  box-shadow: none;
}

.woocommerce-cart #main .cart_totals h2 {
  margin-bottom: 20px;
}

.woocommerce-cart #main .woocommerce-cart-form {
  min-width: 0;
}

:is(.woocommerce-cart, .woocommerce-checkout) #main table.shop_table {
  --theme-table-border-color: #e7e1ec;
  color: var(--elefpi-ink);
  line-height: 1.4;
}

:is(.woocommerce-cart, .woocommerce-checkout) #main table.shop_table th {
  color: var(--elefpi-ink);
  font-size: 14px;
  font-weight: 600;
}

.woocommerce-cart #main .woocommerce-cart-form__contents .product-name a {
  color: var(--elefpi-ink);
  font-size: 16px;
  font-weight: 600;
  line-height: 1.4;
  text-decoration: none;
  overflow-wrap: break-word;
}

.woocommerce-cart #main .woocommerce-cart-form__contents .product-thumbnail {
  width: 88px;
}

.woocommerce-cart #main .woocommerce-cart-form__contents .product-thumbnail img {
  border-radius: 3px;
}

:is(.woocommerce-cart, .woocommerce-checkout) #main .woocommerce-Price-amount {
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

:is(.woocommerce-cart, .woocommerce-checkout) #main .order-total {
  color: var(--elefpi-ink);
  font-weight: 700;
}

.woocommerce-cart #main .cart_totals .order-total .woocommerce-Price-amount,
.woocommerce-checkout #main .ct-order-review .order-total .woocommerce-Price-amount {
  font-size: 20px;
}

.woocommerce-cart #main .ct-cart-form-actions {
  gap: 16px;
}

.woocommerce-cart #main .ct-cart-form-actions .coupon {
  gap: 8px;
  min-width: 0;
}

.woocommerce-cart #main .ct-cart-form-actions .coupon input {
  min-width: 0;
  max-width: 100%;
}

.woocommerce-cart #main .product-remove .remove {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 36px;
  min-height: 36px;
}

/* Pink actions retain the existing brand colour; dark labels improve contrast. */
:is(.woocommerce-shop, .woocommerce-cart, .woocommerce-checkout) #main .button,
.woocommerce-checkout #main #place_order {
  --theme-button-text-initial-color: #0F0E17;
  --theme-button-text-hover-color: #0F0E17;
  min-height: 48px;
  border-radius: 5px;
  font-size: 14px;
  font-weight: 700;
  line-height: 1.4;
  text-align: center;
  white-space: normal;
}

:is(.woocommerce-shop, .woocommerce-cart, .woocommerce-checkout) #main :is(a, button, input, select, textarea):focus-visible {
  outline: 2px solid #6713D2;
  outline-offset: 3px;
}

/* Checkout keeps all billing, validation and payment fields in their native form. */
.woocommerce-checkout #main .ct-woocommerce-checkout {
  grid-template-columns: minmax(0, 1.1fr) minmax(340px, 0.9fr);
  gap: 40px;
  align-items: start;
}

.woocommerce-checkout #main .ct-customer-details {
  min-width: 0;
}

.woocommerce-checkout #main .ct-order-review {
  --order-review-border: 1px solid #e7e1ec;
  --order-review-border-radius: 5px;
  --order-review-padding: 24px;
  min-width: 0;
  background: #faf8fc;
  box-shadow: none;
}

.woocommerce-checkout #main :is(.woocommerce-billing-fields, .woocommerce-additional-fields) h3,
.woocommerce-checkout #main #order_review_heading {
  margin-block: 0 24px;
  color: var(--elefpi-ink);
  font-size: 20px;
  font-weight: 700;
  line-height: 1.4;
  letter-spacing: -0.01em;
}

.woocommerce-checkout #main .woocommerce-billing-fields__field-wrapper {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px 16px;
}

.woocommerce-checkout #main .woocommerce-billing-fields__field-wrapper > .form-row {
  grid-column: 1 / -1;
  float: none;
  width: auto;
  min-width: 0;
  margin: 0;
}

.woocommerce-checkout #main .woocommerce-billing-fields__field-wrapper > .form-row:where(.form-row-first, #billing_postcode_field) {
  grid-column: 1;
}

.woocommerce-checkout #main .woocommerce-billing-fields__field-wrapper > .form-row:where(.form-row-last, #billing_city_field) {
  grid-column: 2;
}

.woocommerce-checkout #main .form-row label {
  margin-bottom: 7px;
  color: var(--elefpi-ink);
  font-size: 14px;
  font-weight: 500;
  line-height: 1.45;
}

.woocommerce-checkout #main .form-row .optional {
  color: var(--elefpi-muted);
  font-size: 13px;
  font-weight: 400;
}

.woocommerce-checkout #main :is(input.input-text, textarea, .select2-selection) {
  border-width: 1px;
  border-color: #96899f;
  border-radius: 5px;
  background: #fff;
  color: var(--elefpi-ink);
  font-size: 16px;
}

.woocommerce-checkout #main .select2-container {
  max-width: 100%;
}

.woocommerce-checkout #main .form-row.woocommerce-invalid :is(input, select, .select2-selection) {
  border-color: #b42337;
}

.woocommerce-checkout #main .woocommerce-additional-fields {
  margin-top: 32px;
}

.woocommerce-checkout #main .woocommerce-additional-fields textarea {
  min-height: 112px;
  resize: vertical;
}

.woocommerce-checkout #main .woocommerce-privacy-policy-text {
  color: var(--elefpi-muted);
  font-size: 13px;
  line-height: 1.55;
}

:is(.woocommerce-cart, .woocommerce-checkout) #main :is(.woocommerce-error, .woocommerce-message, .woocommerce-info) {
  border-radius: 5px;
  font-size: 14px;
  line-height: 1.5;
  overflow-wrap: break-word;
}

.woocommerce-checkout #main #payment .woocommerce-info {
  --theme-text-color: #42344f;
  --theme-link-initial-color: #6713D2;
  color: #42344f;
  background: #eee8f5;
}

.woocommerce-cart #main .woocommerce:has(> .cart-empty) {
  max-width: 640px;
  margin-inline: auto;
  padding-block: 28px 48px;
}

/* ELEFPI period offers — presentation only, 24 October 2026.
   The child view owns the copy; Commerce owns amounts and selected periods.
   Never generate commercial wording with CSS pseudo-elements. */
.single-product #product-1771 .ec-offers {
  margin-bottom: 22px;
}

.single-product #product-1771 .ec-offers legend {
  margin-bottom: 12px;
  color: #14243b;
  font-size: 1rem;
  font-weight: 600;
  line-height: 1.4;
}

.single-product #product-1771 .ec-offer-choice {
  font-size: 0.9375rem;
  font-weight: 600;
  box-shadow: none;
}

.single-product #product-1771 .ec-offer-panel {
  min-height: 0;
  padding: 18px 0 0;
}

.single-product #product-1771 .ec-offer-price {
  align-items: baseline;
  gap: 4px 8px;
  margin: 0 0 8px;
  color: #14243b;
  font-size: clamp(1.5rem, 1.25rem + 0.6vw, 1.75rem);
  font-weight: 600;
  line-height: 1.25;
  letter-spacing: -0.015em;
  font-variant-numeric: tabular-nums;
}

.single-product #product-1771 .ec-offer-period,
.elefpi-price-period {
  display: inline-block;
  color: #51485d;
  font-size: 0.875rem;
  font-weight: 400;
  line-height: 1.4;
  letter-spacing: 0;
  white-space: nowrap;
}

.single-product #product-1771 .ec-offer-payment {
  margin-bottom: 12px;
  color: #51485d;
  font-size: 0.875rem;
  line-height: 1.5;
}

.single-product #product-1771 .ec-offer-saving {
  padding: 9px 12px;
  font-size: 0.875rem;
  line-height: 1.5;
}

/* Match the cart's readable labels on the existing pink brand action. */
.single-product #product-1771 .single_add_to_cart_button,
.ct-cart-content .woocommerce-mini-cart__buttons .button {
  --theme-button-text-initial-color: #0F0E17;
  --theme-button-text-hover-color: #0F0E17;
  min-height: 48px;
  color: #0F0E17;
  font-weight: 600;
}

/* Definitions stay native HTML in the cart, mini-cart and checkout. */
.woocommerce-cart #main .product-name dl.variation,
.woocommerce-checkout #main .product-name dl.variation,
.woocommerce-mini-cart dl.variation {
  display: grid;
  grid-template-columns: max-content minmax(0, 1fr);
  gap: 4px 12px;
  margin: 10px 0 12px;
  padding: 0;
  font-size: 0.875rem;
  line-height: 1.45;
}

:is(.woocommerce-cart, .woocommerce-checkout) #main .product-name dl.variation :is(dt, dd),
.woocommerce-mini-cart dl.variation :is(dt, dd) {
  float: none;
  min-width: 0;
  margin: 0;
  padding: 0;
  overflow-wrap: break-word;
}

:is(.woocommerce-cart, .woocommerce-checkout) #main .product-name dl.variation dt,
.woocommerce-mini-cart dl.variation dt {
  color: #51485d;
  font-weight: 400;
}

:is(.woocommerce-cart, .woocommerce-checkout) #main .product-name dl.variation dd,
.woocommerce-mini-cart dl.variation dd {
  color: #14243b;
  font-weight: 500;
}

:is(.woocommerce-cart, .woocommerce-checkout) #main .product-name dl.variation dd p,
.woocommerce-mini-cart dl.variation dd p {
  margin: 0;
}

/* Blocksy's mini-cart has its own surface colour; retain its native text tone. */
.woocommerce-mini-cart dl.variation :is(dt, dd),
.woocommerce-mini-cart .elefpi-price-period {
  color: inherit;
}

.woocommerce-cart #main .product-name > .price:has(.elefpi-price-period) {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 4px 6px;
  margin: 0 0 12px;
  font-size: 1rem;
  font-weight: 600;
  line-height: 1.4;
}

@media (max-width: 1023px) {
  .woocommerce-shop #main .products { --shop-columns: 2; }
  .woocommerce-cart #main .ct-woocommerce-cart-form,
  .woocommerce-checkout #main .ct-woocommerce-checkout {
    grid-template-columns: minmax(0, 1fr);
    gap: 32px;
  }
  .woocommerce-cart #main .cart_totals,
  .woocommerce-checkout #main .ct-order-review {
    position: static;
  }
}

@media (max-width: 768px) {
  :is(.woocommerce-shop, .woocommerce-cart, .woocommerce-checkout) #main {
    line-height: 1.3;
  }
  :is(.woocommerce-shop, .woocommerce-cart, .woocommerce-checkout) #main .page-title,
  .woocommerce-cart #main .cart_totals h2 {
    margin-bottom: 22px;
    font-size: 22px;
    line-height: 1.3;
  }
  .woocommerce-shop #main > .hero-section {
    padding-block: 24px;
  }
  .woocommerce-shop #main > .hero-section .entry-header,
  .woocommerce-shop #main > .ct-container,
  :is(.woocommerce-cart, .woocommerce-checkout) #main > .ct-container-full {
    width: calc(100% - 32px);
  }
  .woocommerce-shop #main > .hero-section .page-title { margin: 0; }
  .woocommerce-shop #main > .ct-container { padding-block: 24px 40px; }
  .woocommerce-shop #main .elefpi-shop-intro h2 { font-size: 22px; }
  .woocommerce-shop #main .products { --shop-columns: 1; }
  .woocommerce-shop #main .products > li.product:only-of-type {
    grid-template-columns: minmax(0, 1fr);
    grid-template-rows: auto;
    gap: 0;
    padding: 20px;
  }
  .woocommerce-shop #main .products > li.product:only-of-type > figure {
    grid-column: 1;
    grid-row: auto;
    width: 100%;
    max-width: 360px;
    margin: 0 auto 24px;
  }
  .woocommerce-shop #main .products > li.product:only-of-type > :not(figure) { grid-column: 1; }
  .woocommerce-shop #main .products > li.product:only-of-type .woocommerce-loop-product__title {
    margin-top: 0;
    font-size: 22px;
  }
  .woocommerce-cart #main .ct-woocommerce-cart-form .cart_totals { --cart-totals-padding: 20px; }
  .woocommerce-checkout #main .ct-order-review { --order-review-padding: 20px; }
}

@media (max-width: 689.98px) {
  .woocommerce-cart #main .ct-cart-form-actions .coupon {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    width: 100%;
  }
  .woocommerce-cart #main .ct-cart-form-actions .coupon > :is(input, button) {
    width: 100%;
  }
}

@media (max-width: 479px) {
  .woocommerce-checkout #main .woocommerce-billing-fields__field-wrapper {
    grid-template-columns: minmax(0, 1fr);
  }
  .woocommerce-checkout #main .woocommerce-billing-fields__field-wrapper > .form-row {
    grid-column: 1;
  }
  .woocommerce-shop #main .products .ct-woo-card-actions,
  .woocommerce-shop #main .products .ct-woo-card-actions .button {
    width: 100%;
  }
}

@media print, (forced-colors: active) {
  :is(.woocommerce-shop, .woocommerce-cart, .woocommerce-checkout) #main .page-title,
  .woocommerce-shop #main .elefpi-shop-intro h2,
  .woocommerce-shop #main .woocommerce-loop-product__title,
  .woocommerce-cart #main .cart_totals h2 {
    background: none;
    color: CanvasText;
    -webkit-text-fill-color: currentColor;
  }
}

/* ==================================================
   11. CUSTOMER ACCOUNT — FORMS AND NATIVE NOTICES
   Presentation only. WooCommerce validation, password
   strength, tokens, hooks and account actions stay native.
   ================================================== */

.woocommerce-account #main {
  --theme-form-field-height: 48px;
  --theme-form-field-border-radius: 5px;
  --theme-form-field-border-initial-color: #96899f;
  --theme-form-field-border-focus-color: #6713D2;
  color: #0F0E17;
}

.woocommerce-account #main :is(.woocommerce-ResetPassword, .woocommerce-form-login, .woocommerce-form-register, .woocommerce-EditAccountForm),
.woocommerce-account #main .woocommerce-MyAccount-content > p,
.woocommerce-account.woocommerce-lost-password #main .woocommerce > p {
  min-width: 0;
  color: #0F0E17;
  line-height: 1.4;
  overflow-wrap: break-word;
}

.woocommerce-account #main :is(.woocommerce-ResetPassword, .woocommerce-form-login, .woocommerce-form-register, .woocommerce-EditAccountForm) p {
  color: inherit;
  line-height: inherit;
}

.woocommerce-account #main .woocommerce h2 {
  max-width: 100%;
  color: #6713D2;
  background: none;
  -webkit-text-fill-color: currentColor;
  font-family: inherit;
  font-size: 28px;
  font-weight: 700;
  line-height: 1.4;
  overflow-wrap: break-word;
}

@supports (background-clip: text) or (-webkit-background-clip: text) {
  .woocommerce-account #main .woocommerce h2 {
    background-color: #6713D2;
    background-image: linear-gradient(0deg, #CC208E 0%, #6713D2 100%);
    background-repeat: no-repeat;
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    -webkit-text-fill-color: transparent;
  }
}

.woocommerce-account #main :is(.woocommerce-ResetPassword, .woocommerce-form-login, .woocommerce-form-register, .woocommerce-EditAccountForm) :is(input.input-text, select, textarea) {
  box-sizing: border-box;
  min-width: 0;
  max-width: 100%;
  min-height: 48px;
  border-color: #96899f;
  border-radius: 5px;
  color: #0F0E17;
  background: #fff;
  font-size: 16px;
}

.woocommerce-account #main .woocommerce .button {
  --theme-button-background-initial-color: #6713D2;
  --theme-button-background-hover-color: #5310ad;
  --theme-button-text-initial-color: #fff;
  --theme-button-text-hover-color: #fff;
  box-sizing: border-box;
  min-width: 0;
  max-width: 100%;
  min-height: 48px;
  border-radius: 5px;
  color: #fff;
  background-color: #6713D2;
  font-size: 14px;
  font-weight: 700;
  line-height: 1.4;
  white-space: normal;
  overflow-wrap: break-word;
}

.woocommerce-account #main .woocommerce .button:hover {
  color: #fff;
  background-color: #5310ad;
}

.woocommerce-account #main .woocommerce-LostPassword a,
.woocommerce-account #main .woocommerce-MyAccount-content > p a:not(.button),
.woocommerce-account #main .woocommerce-MyAccount-content td a:not(.button) {
  color: #6713D2;
  text-decoration: underline;
  text-underline-offset: 3px;
}

.woocommerce-account #main .woocommerce-form-login__rememberme {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 44px;
}

.woocommerce-account #main :is(a, button, input, select, textarea):focus-visible {
  outline: 2px solid #6713D2;
  outline-offset: 3px;
}

.woocommerce-account #main :is(.woocommerce-error, .woocommerce-message, .woocommerce-info) {
  border-radius: 5px;
  color: #0F0E17;
  font-size: 16px;
  line-height: 1.4;
  overflow-wrap: break-word;
}

@media (max-width: 768px) {
  .woocommerce-account #main :is(.woocommerce-ResetPassword, .woocommerce-form-login, .woocommerce-form-register, .woocommerce-EditAccountForm),
  .woocommerce-account #main .woocommerce-MyAccount-content > p,
  .woocommerce-account.woocommerce-lost-password #main .woocommerce > p,
  .woocommerce-account #main :is(.woocommerce-error, .woocommerce-message, .woocommerce-info) {
    line-height: 1.3;
  }

  .woocommerce-account #main .woocommerce h2 {
    font-size: 22px;
    line-height: 1.3;
  }
}

/* Keep native password controls, with an accessible pointer target. */
.woocommerce-account #main form:is(.login, .register, .edit-account, .lost_reset_password) [class*="password-input"] input {
  padding-inline-end: 52px;
}

.woocommerce-account #main form:is(.login, .register, .edit-account, .lost_reset_password) [class*="password-input"] .show-password-input {
  inset-inline-end: 2px;
  top: 2px;
  width: 44px;
  height: 44px;
  -webkit-mask-size: 14px 14px;
  mask-size: 14px 14px;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-position: center;
  mask-position: center;
}

.woocommerce-account #main [class*="password-input"]:has(.show-password-input:focus-visible) {
  outline: 2px solid #6713D2;
  outline-offset: 3px;
}

/* Reserve two lines for both translated labels on desktop. */
@media (min-width: 769px) {
  .woocommerce-account #main .woocommerce-ResetPassword :is(label[for="password_1"], label[for="password_2"]) {
    display: block;
    min-height: 2.8em;
    line-height: 1.4;
  }
}

@media (max-width: 768px) {
  .woocommerce-account #main .woocommerce-ResetPassword :is(.form-row-first, .form-row-last) {
    float: none;
    width: 100%;
  }
}

@media print, (forced-colors: active) {
  .woocommerce-account #main .woocommerce h2 {
    background: none;
    color: CanvasText;
    -webkit-text-fill-color: currentColor;
  }
}


/* Public offer refinement, 25 October 2026. Existing Commerce controls and
   amounts remain native; the child theme supplies only presentation. */
.single-product #product-1771 .ec-offer-price {
  line-height: 1.4;
}

.single-product #product-1771 .elefpi-offer-renewal-note {
  margin: 12px 0 16px;
  padding: 12px 14px;
  border-left: 3px solid #6713D2;
  border-radius: 0 6px 6px 0;
  background: #f8f5fc;
  color: #0F0E17;
  font-size: 14px;
  line-height: 1.4;
}

.single-product #product-1771 .elefpi-offer-renewal-note span:first-child {
  font-weight: 600;
}

@media (max-width: 768px) {
  .single-product #product-1771 .ec-offer-price {
    font-size: 22px;
    line-height: 1.3;
  }
  .single-product #product-1771 .elefpi-offer-renewal-note {
    line-height: 1.3;
  }
}
