s/* ============================================================
   Panier (Cart) + Validation de commande (Checkout)
   Cible les blocks WooCommerce 8+ (.wc-block-*)
   ============================================================ */

/* --- Layout général : on libère la largeur (page.php force --narrow=820px).
   Aligné sur la fiche produit (Stef 26/06) : min(90vw, 1600px). --- */
body.woocommerce-cart .olv-container--narrow,
body.woocommerce-checkout .olv-container--narrow {
    max-width: min(90vw, 1600px) !important;
}

/* Hammer : tous les wrappers entre le container et le bloc WC sont libérés.
   WordPress core, WC blocks et Gutenberg ajoutent parfois des max-width
   sur .wp-block, .entry-content, .is-layout-constrained, etc. */
body.woocommerce-cart .olv-page,
body.woocommerce-cart .olv-page-content,
body.woocommerce-cart .entry-content,
body.woocommerce-cart .wp-block-woocommerce-cart,
body.woocommerce-cart .wp-block-woocommerce-cart > *,
body.woocommerce-checkout .olv-page,
body.woocommerce-checkout .olv-page-content,
body.woocommerce-checkout .entry-content,
body.woocommerce-checkout .wp-block-woocommerce-checkout,
body.woocommerce-checkout .wp-block-woocommerce-checkout > * {
    max-width: none !important;
    width: 100% !important;
}

body.woocommerce-cart .olv-main,
body.woocommerce-checkout .olv-main,
body.woocommerce-cart .olv-main--page,
body.woocommerce-checkout .olv-main--page {
    max-width: min(90vw, 1600px) !important;
    padding-block: clamp(40px, 6vh, 80px);
    /* Air latéral : 16px mini sur mobile, jusqu'à 40px sur desktop. */
    padding-inline: clamp(16px, 4vw, 40px) !important;
}

/* Le bloc WC lui-même prend aussi le padding (au cas où .olv-main soit court-circuité). */
body.woocommerce-cart .wp-block-woocommerce-cart,
body.woocommerce-checkout .wp-block-woocommerce-checkout {
    padding-inline: clamp(16px, 4vw, 40px) !important;
    box-sizing: border-box !important;
}

/* On masque le titre hérité de page.php sur ces pages
   (le bandeau de réassurance + les sections WC suffisent) */
body.woocommerce-cart .olv-page-head,
body.woocommerce-checkout .olv-page-head {
    display: none;
}

/* Le contenu principal n'a pas besoin du fond + border de la card legal/page */
body.woocommerce-cart .olv-page-content,
body.woocommerce-checkout .olv-page-content {
    background: transparent;
    border: none;
    padding: 0;
}

/* Trust badges en bas de sidebar — wrap propre si la sidebar est étroite */
.wc-block-cart__sidebar::after,
.wc-block-checkout__sidebar::after {
    /* \2713 = ✓ check mark U+2713. \E9 = é. ⚠️ Chaque escape hex CSS doit être
       terminé par un ESPACE (ou 6 chars hex) sinon le browser consomme les
       caractères suivants comme partie du code (ex: "\E9c" = U+0E9C = ฯ thaï
       → "sœurisé" au lieu de "sécurisé"). L'espace après l'escape est
       AVALÉ par le parser CSS, donc il faut DEUX espaces si on veut un blanc. */
    content: "\2713  Garantie l\E9 gale 2 ans   \2713  R\E9 tractation 14 j   \2713  Paiement s\E9 curis\E9 ";
    display: block;
    margin-top: 24px;
    padding-top: 18px;
    border-top: 1px solid var(--line);
    color: var(--muted);
    font-size: 0.78rem;
    text-align: center;
    letter-spacing: 0.01em;
    line-height: 1.7;
    word-spacing: 0.4em;
}

/* --- Bandeau de réassurance (haut de page, ajouté via hook PHP) --- */
.olv-checkout-banner {
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: var(--radius-lg);
    padding: 14px 24px;
    margin-bottom: 32px;
    text-align: center;
    color: var(--ink-2);
    font-size: 0.95rem;
    letter-spacing: 0.01em;
}

.olv-checkout-banner strong {
    color: var(--ink);
    font-weight: 500;
}

.olv-checkout-banner span + span::before {
    /* \B7 = middle dot U+00B7, escapé pour être indépendant de l'encodage
       du fichier ou du Content-Type HTTP (sinon affiché "Â·" en Latin-1). */
    content: " \B7  ";
    margin: 0 8px;
    color: var(--muted);
}

/* Icône cadenas SVG inline pour "Paiement sécurisé" */
.olv-checkout-banner .olv-secure::after {
    content: "";
    display: inline-block;
    width: 14px;
    height: 14px;
    margin-left: 6px;
    vertical-align: -2px;
    background-color: currentColor;
    -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='currentColor'><path d='M12 1a5 5 0 0 0-5 5v3H6a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-9a2 2 0 0 0-2-2h-1V6a5 5 0 0 0-5-5zm-3 8V6a3 3 0 1 1 6 0v3H9zm3 5a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3z'/></svg>") no-repeat center / contain;
            mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='currentColor'><path d='M12 1a5 5 0 0 0-5 5v3H6a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-9a2 2 0 0 0-2-2h-1V6a5 5 0 0 0-5-5zm-3 8V6a3 3 0 1 1 6 0v3H9zm3 5a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3z'/></svg>") no-repeat center / contain;
}

/* ============================================================
   Layout 2 colonnes : main + sidebar
   ============================================================ */

/* Wrapper externe : pleine largeur */
.wp-block-woocommerce-checkout,
.wp-block-woocommerce-cart {
    display: block !important;
    max-width: none !important;
    width: 100% !important;
}

/* Universel : cible TOUT élément qui contient main + sidebar comme enfants directs.
   Robuste face aux changements de wrappers selon les versions de WC blocks. */
.wp-block-woocommerce-cart *:has(> .wc-block-cart__main):has(> .wc-block-cart__sidebar),
.wp-block-woocommerce-checkout *:has(> .wc-block-checkout__main):has(> .wc-block-checkout__sidebar),
.wc-block-components-sidebar-layout {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) minmax(340px, 420px) !important;
    gap: clamp(24px, 3vw, 48px) !important;
    align-items: start !important;
    width: 100% !important;
    max-width: none !important;
}

/* Largeur 100% des colonnes pour qu'elles remplissent leur cellule grid */
.wc-block-cart__main,
.wc-block-cart__sidebar,
.wc-block-checkout__main,
.wc-block-checkout__sidebar {
    width: 100% !important;
    min-width: 0;
}

@media (max-width: 880px) {
    .wp-block-woocommerce-cart *:has(> .wc-block-cart__main):has(> .wc-block-cart__sidebar),
    .wp-block-woocommerce-checkout *:has(> .wc-block-checkout__main):has(> .wc-block-checkout__sidebar),
    .wc-block-components-sidebar-layout {
        grid-template-columns: 1fr !important;
    }
}

@media (max-width: 880px) {
    .wp-block-woocommerce-checkout,
    .wp-block-woocommerce-cart {
        grid-template-columns: 1fr;
    }
}

.wc-block-checkout__main,
.wc-block-cart__main {
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: var(--radius-lg);
    padding: clamp(24px, 3vw, 40px);
}

.wc-block-checkout__sidebar,
.wc-block-cart__sidebar {
    position: sticky;
    top: 24px;
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: var(--radius-lg);
    padding: clamp(24px, 3vw, 32px);
}

/* ============================================================
   Sections du checkout (Coordonnées, Livraison, Paiement…)
   ============================================================ */

.wc-block-components-checkout-step {
    background: transparent !important;
    border: none !important;
    padding: 0 !important;
    /* Margin-bottom resserré 2e passe (Stef 26/06 — encore trop d'air) */
    margin: 0 0 12px !important;
}

.wc-block-components-checkout-step + .wc-block-components-checkout-step {
    padding-top: 14px !important;
    border-top: 1px solid var(--line) !important;
}

.wc-block-components-checkout-step__heading {
    margin: 0 0 4px !important;
}

.wc-block-components-checkout-step__title {
    font-family: var(--font-display);
    font-size: clamp(1.3rem, 2vw, 1.55rem);
    font-weight: 500;
    color: var(--ink);
    letter-spacing: -0.01em;
    line-height: 1.2;
}

.wc-block-components-checkout-step__description {
    color: var(--muted);
    font-size: 0.875rem;
    margin-bottom: 8px;
}

/* ============================================================
   Inputs
   ============================================================ */

.wc-block-components-text-input,
.wc-block-components-textarea-control,
.wc-block-components-select {
    margin-bottom: 6px;
}

.wc-block-components-text-input input,
.wc-block-components-textarea-control textarea,
.wc-block-components-select select,
.wp-block-woocommerce-checkout input[type="text"],
.wp-block-woocommerce-checkout input[type="email"],
.wp-block-woocommerce-checkout input[type="tel"],
.wp-block-woocommerce-checkout input[type="number"] {
    background: var(--bg) !important;
    border: 1px solid var(--line) !important;
    border-radius: var(--radius) !important;
    color: var(--ink) !important;
    /* Padding-top resserré (Stef 26/06) tout en gardant la place au label
       flottant qui monte quand le champ a une valeur. */
    padding: 18px 14px 4px !important;
    font-family: var(--font-body) !important;
    font-size: 0.95rem !important;
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

/* Textareas hors .wc-block-components-textarea-control (note de commande,
   commentaires divers). Fond sombre, texte clair, placeholder lisible. */
.wp-block-woocommerce-checkout textarea,
.wp-block-woocommerce-cart textarea,
.wc-block-checkout-order-note__input,
.wc-block-checkout__order-note textarea {
    background: var(--bg) !important;
    border: 1px solid var(--line) !important;
    border-radius: var(--radius) !important;
    color: var(--ink) !important;
    padding: 12px 14px !important;
    font-family: var(--font-body) !important;
    font-size: 1rem !important;
    width: 100% !important;
    box-sizing: border-box !important;
    min-height: 90px;
}
.wp-block-woocommerce-checkout textarea::placeholder,
.wp-block-woocommerce-cart textarea::placeholder,
.wp-block-woocommerce-checkout input::placeholder,
.wp-block-woocommerce-cart input::placeholder,
.wc-block-checkout-order-note__input::placeholder {
    color: var(--muted) !important;
    opacity: 1 !important;
}

.wc-block-components-text-input input:focus,
.wc-block-components-textarea-control textarea:focus,
.wc-block-components-select select:focus {
    outline: none !important;
    border-color: var(--sun) !important;
    box-shadow: 0 0 0 3px rgba(240, 176, 86, 0.18) !important;
}

.wc-block-components-text-input label,
.wc-block-components-textarea-control label,
.wc-block-components-select label {
    color: var(--ink-2) !important;
    /* font-size retiré ! WC gère deux tailles : ~0.9rem quand le label est
       centré (champ vide), ~0.75rem quand il flotte en haut (champ rempli).
       Si on force 0.9rem en !important, le label reste gros et chevauche. */
    font-weight: 500;
}

.wc-block-components-validation-error {
    color: var(--rust);
    font-size: 0.85rem;
}

/* Checkboxes (newsletter, accept terms, etc.) */
.wc-block-components-checkbox {
    margin: 16px 0;
}

/* Alignement label + case (Stef 26/06 — diagnostic externe : la case se
   calait en haut au lieu d'être alignée avec la 1ère ligne de texte).
   flex-start + margin-top: 2px → marche même quand le texte passe sur 2 lignes,
   contrairement à un simple align-items: center.
   !important nécessaire car WC blocks force display: inline-flex en natif. */
.wc-block-components-checkbox label,
.wc-block-components-checkbox > label,
.wc-block-components-checkbox__label {
    display: flex !important;
    align-items: flex-start !important;
    gap: 8px !important;
}

.wc-block-components-checkbox__input,
.wc-block-components-checkbox input[type="checkbox"] {
    accent-color: var(--sun);
    margin-top: 2px !important;
    flex: 0 0 auto !important;
}

.wc-block-components-checkbox__label {
    color: var(--ink-2);
    font-size: 0.95rem;
    line-height: 1.5;
}

/* ============================================================
   Boutons
   ============================================================ */

.wc-block-components-button:not(.is-link),
.wp-block-woocommerce-checkout button[type="submit"],
.wc-block-components-checkout-place-order-button {
    background: var(--sun) !important;
    border: 1px solid var(--sun-deep) !important;
    color: var(--ink) !important;
    border-radius: 999px !important;
    padding: 14px 28px !important;
    font-family: var(--font-body) !important;
    font-weight: 500 !important;
    font-size: 1rem !important;
    text-transform: none !important;
    letter-spacing: 0 !important;
    white-space: nowrap !important;
    transition: background 0.2s ease, transform 0.05s ease;
}

/* Bouton "Valider la commande" / "Passer la commande" : pleine largeur de la sidebar */
.wc-block-cart__submit-button,
.wc-block-cart__submit-container .wc-block-components-button,
.wc-block-checkout__actions .wc-block-components-button,
.wc-block-components-checkout-place-order-button {
    width: 100% !important;
    display: block !important;
    text-align: center !important;
}

.wc-block-components-button:not(.is-link):hover,
.wc-block-components-checkout-place-order-button:hover {
    background: var(--sun-deep) !important;
    transform: translateY(-1px);
}

.wc-block-components-button.is-link {
    color: var(--sun) !important;
    text-underline-offset: 3px;
}

/* Bouton "Valider la commande" (panier) : VERT + sans soulignage (Stef 12/07).
   Ne touche pas au bouton final du checkout (reste orange). */
.wc-block-cart__submit-button,
.wc-block-cart__submit-container .wc-block-components-button:not(.is-link) {
    background: var(--leaf) !important;
    border-color: color-mix(in srgb, var(--leaf) 78%, #000) !important;
    color: #ffffff !important;
    text-decoration: none !important;
}
.wc-block-cart__submit-button *,
.wc-block-cart__submit-container .wc-block-components-button:not(.is-link) * {
    color: #ffffff !important;
    text-decoration: none !important;
}
.wc-block-cart__submit-button:hover,
.wc-block-cart__submit-container .wc-block-components-button:not(.is-link):hover {
    background: color-mix(in srgb, var(--leaf) 85%, #000) !important;
    border-color: color-mix(in srgb, var(--leaf) 68%, #000) !important;
}

/* Bouton final du CHECKOUT « Commander » (Stef 14/07) : même VERT que le panier,
   texte centré, largeur réduite et aligné à DROITE (au lieu de pleine largeur). */
.wc-block-checkout__actions {
    text-align: right !important;
}
.wc-block-checkout__actions .wc-block-components-button:not(.is-link),
.wc-block-components-checkout-place-order-button {
    background: var(--leaf) !important;
    border-color: color-mix(in srgb, var(--leaf) 78%, #000) !important;
    color: #ffffff !important;
    width: auto !important;
    min-width: 280px;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    text-align: center !important;
    text-decoration: none !important;
}
.wc-block-checkout__actions .wc-block-components-button:not(.is-link) *,
.wc-block-components-checkout-place-order-button * {
    color: #ffffff !important;
    text-decoration: none !important;
}
.wc-block-checkout__actions .wc-block-components-button:not(.is-link):hover,
.wc-block-components-checkout-place-order-button:hover {
    background: color-mix(in srgb, var(--leaf) 85%, #000) !important;
    border-color: color-mix(in srgb, var(--leaf) 68%, #000) !important;
    transform: translateY(-1px);
}

/* ============================================================
   Sidebar — récapitulatif de commande
   ============================================================ */

.wc-block-components-order-summary,
.wc-block-cart-items {
    background: transparent !important;
    border: none !important;
    padding: 0 !important;
}

.wc-block-cart-items__header {
    border-bottom: 1px solid var(--line);
    padding-bottom: 12px;
    margin-bottom: 16px;
    font-family: var(--font-mono);
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    color: var(--muted);
}

.wc-block-components-order-summary-item,
.wc-block-cart-items__row {
    border-bottom: 1px solid var(--line) !important;
    /* Padding resserré (Stef 26/06 — gain de moitié de la hauteur récap) */
    padding: 10px 0 !important;
    background: transparent !important;
}

.wc-block-components-order-summary-item:last-child,
.wc-block-cart-items__row:last-child {
    border-bottom: none !important;
}

.wc-block-components-product-name,
.wc-block-cart-item__product-name {
    color: var(--ink) !important;
    font-family: var(--font-body) !important;
    font-weight: 500;
    text-decoration: none !important;
    font-size: 1.05rem !important;
}

.wc-block-components-product-metadata,
.wc-block-cart-item__product-metadata,
.wc-block-cart-item__product-metadata > div,
.wc-block-cart-item__product .wc-block-components-product-details {
    color: var(--ink-2);
    font-size: 0.9rem;
    line-height: 1.5;
    margin-top: 4px;
}

/* Vire la troncature CSS de WC blocks (line-clamp) sur la description du panier */
.wc-block-components-product-metadata,
.wc-block-components-product-metadata__description,
.wc-block-cart-item__product-metadata,
.wc-block-cart-item__product-metadata p {
    display: block !important;
    -webkit-line-clamp: unset !important;
    -webkit-box-orient: unset !important;
    line-clamp: unset !important;
    overflow: visible !important;
    text-overflow: clip !important;
}

/* Cache le prix unitaire à GAUCHE dans la ligne panier (le total à droite suffit) */
.wc-block-cart-item__product .wc-block-components-product-price,
.wc-block-cart-item__product > .wc-block-components-product-price {
    display: none !important;
}

.wc-block-components-product-price,
.wc-block-cart-item__total-price {
    color: var(--ink) !important;
    font-family: var(--font-display);
    font-weight: 500;
}

/* Layout des lignes panier : flex + flex-wrap + order pour mettre l'image en bas.
   On casse complètement le rendu table pour éviter les conflits. */
table.wc-block-cart-items,
.wc-block-cart-items {
    display: block !important;
    width: 100% !important;
    border-collapse: separate !important;
    border-spacing: 0 !important;
}

.wc-block-cart-items > thead,
.wc-block-cart-items > tbody,
.wc-block-cart-items thead,
.wc-block-cart-items tbody {
    display: block !important;
    width: 100% !important;
}

.wc-block-cart-items__header,
.wc-block-cart-items thead tr {
    display: flex !important;
    justify-content: space-between !important;
    padding: 0 0 14px !important;
    border-bottom: 1px solid var(--line) !important;
}

.wc-block-cart-items thead th {
    display: block !important;
    padding: 0 !important;
}

.wc-block-cart-items__row,
tr.wc-block-cart-items__row {
    display: flex !important;
    flex-wrap: nowrap !important; /* image + infos + total sur une ligne (Stef 12/07) */
    gap: 12px !important;
    padding: 14px 0 !important;
    width: 100% !important;
    border-bottom: 1px solid var(--line) !important;
    background: transparent !important;
    align-items: flex-start !important;
}

.wc-block-cart-items__row > td,
.wc-block-cart-items__row > th {
    display: block !important;
    padding: 0 !important;
    border: none !important;
}

.wc-block-cart-items__row > .wc-block-cart-item__product,
.wc-block-cart-items__row > td.wc-block-cart-item__product {
    flex: 1 1 auto !important;
    min-width: 0 !important;
    order: 1 !important;
}

.wc-block-cart-items__row > .wc-block-cart-item__total,
.wc-block-cart-items__row > td.wc-block-cart-item__total {
    flex: 0 0 auto !important;
    text-align: right !important;
    white-space: nowrap !important;
    order: 2 !important;
}

/* Image produit : VIGNETTE carrée 64px à GAUCHE (Stef 12/07 — l'ancienne
   image pleine largeur sous les infos rendait mal avec plusieurs articles). */
.wc-block-cart-items__row > .wc-block-cart-item__image,
.wc-block-cart-items__row > td.wc-block-cart-item__image {
    flex: 0 0 64px !important;
    width: 64px !important;
    order: 0 !important; /* en premier, à gauche */
}

.wc-block-cart-item__image {
    border-radius: var(--radius) !important;
    background: var(--bg) !important;
    overflow: hidden !important;
    width: 64px !important;
    height: 64px !important;
    border: 1px solid var(--line) !important;
    box-shadow: none !important;
    outline: none !important;
}

.wc-block-cart-item__image a {
    display: block !important;
    width: 64px !important;
    height: 64px !important;
    border: none !important;
    outline: none !important;
    box-shadow: none !important;
    text-decoration: none !important;
}

.wc-block-cart-item__image img {
    width: 64px !important;
    height: 64px !important;
    aspect-ratio: 1 / 1 !important;
    object-fit: cover !important;
    object-position: center 30% !important;
    border: none !important;
    outline: none !important;
    display: block !important;
    border-radius: var(--radius) !important;
}

/* Le titre ne doit JAMAIS wrap par caractère */
.wc-block-cart-item__product-name,
.wc-block-components-product-name {
    word-break: normal !important;
    overflow-wrap: break-word !important;
    white-space: normal !important;
    font-size: 1.1rem !important;
    line-height: 1.3 !important;
}

/* Image dans le récap commande (sidebar checkout) reste en miniature 80×80 */
.wc-block-components-order-summary-item__image {
    border-radius: var(--radius);
    background: var(--bg);
    overflow: hidden;
    width: 80px !important;
    height: 80px !important;
}

.wc-block-components-order-summary-item__image img {
    width: 100% !important;
    height: 100% !important;
    object-fit: cover !important;
    /* cadrage biaisé vers le haut : sinon dans le carré 80x80 la tête est coupée */
    object-position: center 30% !important;
    display: block !important;
}

/* Aligner la card main pour ne plus avoir un grand vide en bas */
.wc-block-cart__main {
    align-self: start;
}

/* ============================================================
   Totaux
   ============================================================ */

.wc-block-components-totals-wrapper {
    border-top: 1px solid var(--line) !important;
    padding-top: 8px !important;
    margin-top: 8px !important;
}

.wc-block-components-totals-item {
    color: var(--ink-2);
    font-size: 0.95rem;
    padding: 4px 0;
}

.wc-block-components-totals-item__label {
    color: var(--ink-2);
}

.wc-block-components-totals-item__value {
    color: var(--ink);
    font-family: var(--font-display);
    font-weight: 500;
}

/* Card "Tarif TTC" : même look que la fiche produit */
.wc-block-components-totals-footer-item {
    display: grid !important;
    grid-template-columns: 1fr auto !important;
    gap: 4px 12px !important;
    align-items: center !important;
    background: var(--bg) !important;
    border: 1px solid var(--line) !important;
    border-radius: var(--radius-lg) !important;
    padding: 18px 22px !important;
    margin: 16px 0 24px !important;
}

/* Eyebrow "Tarif TTC" : on remplace le texte WC ("Total") via CSS */
.wc-block-components-totals-footer-item .wc-block-components-totals-item__label {
    grid-column: 1;
    grid-row: 1;
    font-size: 0 !important;
    color: var(--muted) !important;
}

.wc-block-components-totals-footer-item .wc-block-components-totals-item__label::before {
    content: "Tarif TTC";
    font-family: var(--font-mono);
    font-size: 0.7rem;
    text-transform: uppercase;
    letter-spacing: 0.14em;
    color: var(--muted);
    font-weight: 500;
}

.wc-block-components-totals-footer-item .wc-block-components-totals-item__value {
    grid-column: 1;
    grid-row: 2;
    font-family: var(--font-display) !important;
    font-size: clamp(2rem, 4vw, 2.6rem) !important;
    font-weight: 800 !important;
    line-height: 1.1 !important;
    color: var(--ink) !important;
    letter-spacing: -0.02em !important;
}

/* "Dont TVA" à droite (apparaît seulement si WC affiche les taxes incluses) */
.wc-block-components-totals-footer-item .wc-block-components-totals-item__description {
    grid-column: 2;
    grid-row: 1 / span 2;
    font-family: var(--font-mono) !important;
    font-size: 0.7rem !important;
    color: var(--muted) !important;
    align-self: end !important;
    text-align: right !important;
    text-transform: uppercase;
    letter-spacing: 0.08em;
}

.wc-block-components-totals-footer-item .wc-block-components-totals-item__description strong {
    display: block;
    color: var(--ink);
    font-family: var(--font-display);
    font-size: 0.95rem;
    text-transform: none;
    letter-spacing: 0;
    margin-top: 2px;
}

/* "Livraison offerte" — accent leaf */
.wc-block-components-totals-shipping .wc-block-components-totals-item__value {
    color: var(--leaf);
}

/* ============================================================
   Trust badges sous le récap (ajouté via hook PHP)
   ============================================================ */

.olv-checkout-trust {
    margin-top: 20px;
    padding-top: 16px;
    border-top: 1px solid var(--line);
    display: flex;
    flex-wrap: wrap;
    gap: 12px 18px;
    color: var(--muted);
    font-size: 0.85rem;
    align-items: center;
    justify-content: center;
}

.olv-checkout-trust span {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

.olv-checkout-trust span::before {
    content: "✓";
    color: var(--leaf);
    font-weight: 600;
}

/* ============================================================
   Coupon / code promo
   ============================================================ */

.wc-block-components-totals-coupon {
    border: 1px solid var(--line);
    border-radius: var(--radius);
    padding: 16px !important;
    margin: 12px 0 !important;
}

/* Code promo : input + bouton côte à côte (couvre plusieurs versions WC) */
.wc-block-components-totals-coupon form,
.wc-block-components-totals-coupon-form,
.wc-block-components-totals-coupon__content {
    display: flex !important;
    flex-direction: row !important;
    gap: 10px !important;
    align-items: flex-end !important;
    flex-wrap: nowrap !important;
    padding: 0 !important;
    margin: 0 !important;
}

.wc-block-components-totals-coupon .wc-block-components-text-input,
.wc-block-components-totals-coupon-form .wc-block-components-text-input,
.wc-block-components-totals-coupon__input {
    flex: 1 1 0% !important;
    min-width: 0 !important;
    margin: 0 !important;
}

/* Bouton "Appliquer" compact : padding réduit pour ne pas toucher le cadre */
.wc-block-components-totals-coupon button,
.wc-block-components-totals-coupon-form button,
.wc-block-components-totals-coupon button[type="submit"],
.wc-block-components-totals-coupon__button {
    flex: 0 0 auto !important;
    width: auto !important;
    white-space: nowrap !important;
    margin: 0 !important;
    padding: 8px 16px !important;
    font-size: 0.85rem !important;
    align-self: flex-end !important;
    min-height: auto !important;
    border-radius: var(--radius) !important;
}

.wc-block-components-totals-coupon__button {
    background: transparent !important;
    color: var(--sun) !important;
    border: none !important;
    padding: 0 !important;
    text-transform: none !important;
    letter-spacing: 0 !important;
}

/* === Toggle Livraison principal (Expédier / Retrait à l'atelier) ===
   Les 2 grosses tuiles tout en haut de la section "Livraison".
   Lorsqu'une est sélectionnée (fond clair), le label doit rester ink
   sombre lisible (Stef 26/06 — "Expédier" apparaissait en gris pâle). */
.wc-block-checkout__shipping-method-container,
.wc-block-checkout-shipping-method-select-block,
.wp-block-woocommerce-checkout-shipping-method-block {
    color: var(--ink) !important;
}
.wc-block-checkout__shipping-method-container .wc-block-checkout-shipping-method-block__title,
.wc-block-checkout-shipping-method-select-block button {
    color: var(--ink) !important;
    font-weight: 500;
}
/* Tuile sélectionnée : fond clair → texte sombre */
.wc-block-checkout__shipping-method-container .is-selected,
.wc-block-checkout-shipping-method-select-block button.is-active,
.wc-block-checkout-shipping-method-select-block button[aria-pressed="true"] {
    background: var(--ink) !important;
    color: var(--bg) !important;
}
.wc-block-checkout__shipping-method-container .is-selected svg,
.wc-block-checkout-shipping-method-select-block button.is-active svg,
.wc-block-checkout-shipping-method-select-block button[aria-pressed="true"] svg {
    color: var(--bg) !important;
    fill: var(--bg) !important;
}

/* ============================================================
   LIVRAISON + PAIEMENT — SOURCE UNIQUE & MINIMALE (Stef 27/06)
   Reset complet : ni wrappers ni options ne portent de fond/bordure/box-shadow.
   Chaque option = ligne (◯ Label .......... Valeur). Séparateur fin --line.
   Sélectionné = SEUL le radio --sun (via accent-color). Description BACS
   indentée --muted. !important conservés UNIQUEMENT sur les resets pour
   battre un éventuel Code Snippet / CSS additionnel Customizer.
   ============================================================ */

/* Wrappers de groupes : pas d'encadré */
.wc-block-components-shipping-rates-control,
.wc-block-components-shipping-rates-control__package,
.wc-block-components-payment-methods,
.wc-block-checkout__shipping-method,
.wc-block-checkout__shipping-option,
.wc-block-checkout__payment-method,
.wp-block-woocommerce-checkout-shipping-methods-block,
.wp-block-woocommerce-checkout-payment-block {
    background: transparent !important;
    border: none !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    padding: 0 !important;
}

/* Reset complet — toutes options (simples + accordion) + tous modificateurs
   d'état WC (--checked, --highlight-checked, --last-selected, --option-highlighted,
   __option-checked-option-highlighted). Cascade : on cible aussi les enfants des
   wrappers highlighted pour battre toute règle native WC.
   Sélecteur attribut [class*="highlight"] = filet de sécurité catch-all pour
   toute variante future de classe contenant "highlight". */
.wc-block-components-radio-control,
.wc-block-components-radio-control--highlight-checked,
.wc-block-components-radio-control--highlight-checked--last-selected,
.wc-block-components-radio-control--highlight-checked .wc-block-components-radio-control__option,
.wc-block-components-radio-control--highlight-checked--last-selected .wc-block-components-radio-control__option,
.wc-block-components-radio-control__option,
.wc-block-components-radio-control__option-checked,
.wc-block-components-radio-control__option-checked-option-highlighted,
.wc-block-components-radio-control-accordion-option,
.wc-block-components-radio-control-accordion-option--checked-option,
.wc-block-components-radio-control-accordion-option--checked-option-highlighted,
[class*="wc-block-components-radio-control"][class*="highlight"] {
    background: transparent !important;
    border: none !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    outline: none !important;
    margin: 0;
    transition: none;
}

/* Chaque option : ligne simple + séparateur fin entre */
.wc-block-components-radio-control__option,
.wc-block-components-radio-control-accordion-option {
    padding: 14px 0 14px 44px;          /* 44px à gauche pour le radio */
    border-bottom: 1px solid var(--line);
    position: relative;
}
.wc-block-components-radio-control__option:last-child,
.wc-block-components-radio-control-accordion-option:last-child {
    border-bottom: none;
}

/* Radio natif : positionné à gauche, couleur --sun */
.wc-block-components-radio-control__input,
input.wc-block-components-radio-control__input {
    accent-color: var(--sun);
    position: absolute;
    left: 16px;
    top: 50%;
    transform: translateY(-50%);
    margin: 0;
}

/* Label + valeur sur la même ligne (justify-content: space-between) */
.wc-block-components-radio-control__option-label,
.wc-block-components-radio-control-accordion-option > label {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 12px;
    width: 100%;
    color: var(--ink);
}

/* Description du moyen de paiement (BACS « Effectuez le paiement... »)
   → indentée sous l'option, --muted, sans encadré. */
.wc-block-checkout__payment-method
  .wc-block-components-radio-control-accordion-content {
    background: transparent;
    border: none;
    box-shadow: none;
    padding: 6px 0 12px 44px;
    color: var(--muted);
    font-size: 13px;
    line-height: 1.55;
}

/* ----- COUP DE GRÂCE : pseudo-éléments ::before / ::after du highlight WC -----
   Le « cadre qui suit la coche » est dessiné par WC via des pseudo-éléments
   sur .wc-block-components-radio-control--highlight-checked (parent) et sur
   l'option enfant. Sans ce neutralizer, mes overrides border/background ne
   suffisent pas — le cadre revient via content + box-shadow des pseudos.
   Source : diag Stef 27/06 via Console DevTools.
*/
.wc-block-components-radio-control--highlight-checked .wc-block-components-radio-control__option::before,
.wc-block-components-radio-control--highlight-checked .wc-block-components-radio-control__option::after,
.wc-block-components-radio-control--highlight-checked::before,
.wc-block-components-radio-control--highlight-checked::after,
.wc-block-checkout__shipping-option::before,
.wc-block-checkout__shipping-option::after {
    content: none !important;
    display: none !important;
    box-shadow: none !important;
}

/* ============================================================
   Notices (succès, info, erreur)
   ============================================================ */

.wc-block-components-notice-banner {
    background: var(--surface) !important;
    border: 1px solid var(--line) !important;
    border-left: 4px solid var(--leaf) !important;
    border-radius: var(--radius) !important;
    color: var(--ink) !important;
}

.wc-block-components-notice-banner.is-error {
    border-left-color: var(--rust) !important;
}

.wc-block-components-notice-banner.is-warning {
    border-left-color: var(--sun) !important;
}

/* ============================================================
   Cart vide
   ============================================================ */

.wc-block-cart__empty-cart__title {
    font-family: var(--font-display);
    font-size: clamp(1.8rem, 3vw, 2.4rem);
    font-weight: 800;
    color: var(--ink);
}

.wc-block-cart__empty-cart__description {
    color: var(--ink-2);
}

/* ============================================================
   RÉCAP COMMANDE — épuré (Stef 27/06, corrigé 12/07)
   Stef veut UNIQUEMENT : ligne Article/Prix · Code Promo · Sous-total · Livraison.
   On masque : le TOTAL FINAL (= .wc-block-components-totals-footer-item) + TVA
   + fee + discount.
   ⚠️ BUG CORRIGÉ : on masquait aussi -order-summary-totals-block, or c'est le
   CONTENEUR PARENT qui enveloppe Sous-total + Livraison → ça les écrasait à 0px.
   Retiré de la liste.
   ============================================================ */
.wp-block-woocommerce-checkout-order-summary-taxes-block,
.wp-block-woocommerce-cart-order-summary-taxes-block,
.wp-block-woocommerce-checkout-order-summary-fee-block,
.wp-block-woocommerce-cart-order-summary-fee-block,
.wp-block-woocommerce-checkout-order-summary-discount-block,
.wp-block-woocommerce-cart-order-summary-discount-block,
.wc-block-components-totals-footer-item {
    display: none !important;
}

/* Masque le prix total ligne (à droite du nom du produit) — doublon avec le
   prix barré/promo affiché sous le nom. Stef 27/06. */
.wc-block-components-order-summary-item__total-price {
    display: none !important;
}
