/* @override 
	https://4b87-e72236dd1c94.wptiger.fr/wp-content/themes/regardsdantan-theme/style.css?* */

/*
Theme Name: Regards d'Antan
Theme URI: https://www.regardsdantan.fr
Author: Maximilien Gorelkine
Author URI: https://www.regardsdantan.fr
Description: Thème WordPress custom pour Regards d'Antan — affiches vintage & cartes postales. Compatible WooCommerce.
Version: 1.0.0
Requires at least: 6.0
Requires PHP: 7.4
License: Proprietary
Text Domain: regardsdantan
Tags: woocommerce, art, poster, gallery, vintage
*/

/* Reset: remove any inherited Postero styles */

/* =================================================================
   TABLE OF CONTENTS — style.css RDA (refactor 2026-05-26)
   Pour navigation rapide, search "SECTION X." dans l'éditeur.

   GLOBAL
     0.  CSS CUSTOM PROPERTIES (Design System / tokens)
     1.  TYPOGRAPHIE (polices auto-hébergées)
     2.  RESET & BASE (overrides légers)
     3.  COULEURS (helpers utilitaires)
     4.  ANIMATIONS (keyframes)

   COMPONENTS UI
     5.  COMPOSANTS UI — Navigation
     6.  COMPOSANTS UI — Boutons custom
     7.  COMPOSANTS UI — Images & Produits
     8.  COMPOSANTS UI — Formulaires

   PAGES
     9.  SECTIONS SPÉCIFIQUES — Homepage
     10. WOOCOMMERCE — Couleurs (helpers)
     11. RESPONSIVE (base)
     12. UTILITAIRES
     13. HOMEPAGE — Headings & Text blocks
     14. HOMEPAGE — Buttons & Containers
     15. EFFETS & ANIMATIONS

   WC PAGES
     16. WOOCOMMERCE — Styles natifs RDA (shop archive, single, etc.)
     17. SINGLE PRODUCT — Layout
     18. CART SLIDE-OUT (mini-cart panneau latéral)
     19. SHOP FILTERS (panneau filtres archive)
     20. SWIPER (carousel related/upsells)
     21. CART PAGE — Layout (table, cart_item, totaux, coupon)
     22. CHECKOUT PAGE — Layout (2 cols, order_review, totaux)
     23. MY ACCOUNT — Sidebar nav + content

     24.  Bullets, shipping calculator, prix unifiés, terracotta totaux

     25. Shipping methods styling (radio + label cart + checkout)
     26. Default 18px reading size WC pages
     33. PROMO BADGE (single product 5pour4)
     34. FEE LINE (promo "carte postale offerte")
     35. CHECKOUT — Override totals colors (navy bold sur subtotal/shipping)
     36. CHECKOUT — Coupon form toggle link
     40. MY-ACCOUNT — Rules supplémentaires
     41. URAMI-ADAPTED TEMPLATES — Cart item, Review order, Login URL-based
     42. AUDIT FINAL — Cart/checkout/shipping override + cart cols 60/25/15%

   ⚠️ Section 40 a été drastiquement réduite (drop ~150 lignes de tabs CSS
      dead code). Templates login passés en URL-based (?action=register).
   ⚠️ Section 42 contient l'override final (tfoot flex layout, shipping
      display:block, cart cols pourcentages, delete icon rond blanc).
   ⚠️ Plusieurs `!important` accumulés au fil des sessions — la section 42
      est l'autorité finale pour cart + checkout + shipping.
   ================================================================= */

/* ========================================
   0. CSS CUSTOM PROPERTIES (Design System)
   ======================================== */
:root {
    --rda-creme: #F5F2E9;
    --rda-navy: #1A2B3C;
    /* Terracotta de marque, retabli a la demande de Max le 2026-08-07 apres un essai
       assombri en #AA5539. La version foncee atteignait 4,61:1 sur le creme, mais la
       teinte de marque comptait davantage.
       ⚠️ Consequence assumee : ce terracotta donne 3,42:1 sur le creme, sous le seuil
       WCAG AA de 4,5:1 pour du texte courant. Il porte le prix et le bouton d'achat.
       Si le sujet revient, la piste est un jeton distinct pour le TEXTE et les fonds de
       bouton, en gardant celui-ci pour les filets, cadres et anneaux, ou le contraste
       ne s'applique pas. */
    --rda-terracotta: #C36A4D;
    --rda-navy-rgb: 26, 43, 60;
    --rda-terracotta-rgb: 195, 106, 77;
    --rda-creme-rgb: 245, 242, 233;
    --rda-cream-border: #e3e1db;
    /* Plus aucune couleur hors charte : la pastille d'information des papiers, un
       temps en ocre, est repassee au bleu nuit. */
    --rda-transition-lux: cubic-bezier(0.25, 1, 0.5, 1);
}

/* ========================================
   1. TYPOGRAPHIE — Polices auto-hebergees
   ======================================== */
@font-face {
    font-family: 'CarlaSans';
    src: url('fonts/CarlaSansRegular.woff2') format('woff2'),
         url('fonts/CarlaSansRegular.woff') format('woff'),
         url('fonts/CarlaSansRegular.ttf') format('truetype');
    font-weight: 400;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'CarlaSans';
    src: url('fonts/CarlaSansLight.woff2') format('woff2'),
         url('fonts/CarlaSansLight.woff') format('woff'),
         url('fonts/CarlaSansLight.ttf') format('truetype');
    font-weight: 300;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'CarlaSans';
    src: url('fonts/CarlaSansSemibold.woff2') format('woff2'),
         url('fonts/CarlaSansSemibold.woff') format('woff'),
         url('fonts/CarlaSansSemibold.ttf') format('truetype');
    font-weight: 600;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'CarlaSans';
    src: url('fonts/CarlaSansBold.woff2') format('woff2'),
         url('fonts/CarlaSansBold.woff') format('woff'),
         url('fonts/CarlaSansBold.ttf') format('truetype');
    font-weight: 700;
    font-style: normal;
    font-display: swap;
}

/* ========================================
   2. RESET & BASE — Overrides legers
   ======================================== */
/* « clip » et non « hidden ».
   « overflow-x: hidden » force le navigateur a passer l'autre axe en « auto » : le
   corps devient une boite de defilement, et TOUT « position: sticky » a l'interieur
   cesse de coller — mesure sur la fiche produit, la galerie descendait avec la page
   au lieu de s'arreter. « clip » decoupe de la meme maniere sans creer de boite de
   defilement, donc le collage fonctionne. Chrome 90+, Firefox 81+, Safari 16+. */
html, body {
    overflow-x: clip;
    max-width: 100vw;
}
body {
    background-color: var(--rda-creme);
    color: var(--rda-navy);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

h1, h2, h3, h4, h5, h6,
.woocommerce ul.products li.product .woocommerce-loop-product__title,
.woocommerce div.product .product_title,
.woocommerce-loop-product__title {
    font-family: 'CarlaSans', sans-serif !important;
    font-variant-ligatures: no-common-ligatures !important;
    font-feature-settings: "liga" 0, "clig" 0 !important;
}

body, p,
.woocommerce-product-details__short-description,
.woocommerce div.product .woocommerce-tabs .panel p {
    font-family: 'EB Garamond', serif;
}

:root {
    --primary: #C36A4D !important;
}

/* ========================================
   3. COULEURS
   ======================================== */
.woocommerce a.button.alt,
.woocommerce button.button.alt,
.woocommerce input.button.alt,
.rda-btn-primary {
    background-color: var(--rda-terracotta) !important;
    border-color: var(--rda-terracotta) !important;
    color: var(--rda-creme) !important;
    transition: all 0.3s ease;
}

.woocommerce a.button.alt:hover,
.woocommerce button.button.alt:hover,
.rda-btn-primary:hover {
    background-color: var(--rda-navy) !important;
    border-color: var(--rda-navy) !important;
}

a {
    color: var(--rda-terracotta);
    transition: color 0.3s ease;
}
a:hover {
    color: var(--rda-navy);
}
/* Navbar links keep their inherited color on hover (no terracotta/navy override) */
#navbar a:hover,
#navbar a:focus,
#mobile-menu a:hover,
#mobile-menu a:focus,
#navbar button:hover,
#navbar button:focus {
    color: inherit;
}

.woocommerce div.product p.price,
.woocommerce div.product span.price,
.woocommerce ul.products li.product .price {
    color: var(--rda-terracotta);
}

/* ========================================
   4. ANIMATIONS — Keyframes
   ======================================== */
.hero-title-line {
    opacity: 0;
    transform: translateY(30px);
    animation: fadeUp 1.2s var(--rda-transition-lux) forwards;
}
.delay-1 { animation-delay: 0.2s; }
.delay-2 { animation-delay: 0.6s; }
.delay-3 { animation-delay: 0.9s; }
.delay-4 { animation-delay: 1.2s; }

@keyframes fadeUp {
    to { opacity: 1; transform: translateY(0); }
}

.ken-burns-effect {
    animation: kenBurns 20s ease-out forwards;
    will-change: transform;
}
@keyframes kenBurns {
    0%   { transform: scale(1.05); }
    100% { transform: scale(1.15); }
}

.parallax-bg {
    will-change: transform;
}

.film-grain {
    position: relative;
}
.film-grain::after {
    content: "";
    position: absolute;
    top: 0; left: 0; width: 100%; height: 100%;
    background-image: url('data:image/svg+xml,%3Csvg viewBox="0 0 200 200" xmlns="http://www.w3.org/2000/svg"%3E%3Cfilter id="noiseFilter"%3E%3CfeTurbulence type="fractalNoise" baseFrequency="0.65" numOctaves="3" stitchTiles="stitch"/%3E%3C/filter%3E%3Crect width="100%25" height="100%25" filter="url(%23noiseFilter)"/%3E%3C/svg%3E');
    opacity: 0.15;
    pointer-events: none;
    mix-blend-mode: multiply;
    z-index: 10;
}

.reveal {
    opacity: 0;
    transform: translateY(40px);
    transition: opacity 1s var(--rda-transition-lux), transform 1s var(--rda-transition-lux);
}
.reveal.active {
    opacity: 1;
    transform: translateY(0);
}

@keyframes scrollLine {
    0%    { transform: scaleY(0); transform-origin: top; }
    50%   { transform: scaleY(1); transform-origin: top; }
    50.1% { transform: scaleY(1); transform-origin: bottom; }
    100%  { transform: scaleY(0); transform-origin: bottom; }
}
.scroll-indicator {
    animation: scrollLine 2.5s infinite cubic-bezier(0.645, 0.045, 0.355, 1);
}

/* ========================================
   5. COMPOSANTS UI — Navigation
   ======================================== */
.shadow-nav {
    box-shadow: 0 4px 20px rgba(var(--rda-navy-rgb), 0.04);
}

.nav-link {
    position: relative;
    display: inline-block;
    padding-bottom: 2px;
}
.nav-link::after {
    content: '';
    position: absolute;
    width: 0;
    height: 1px;
    bottom: 0;
    left: 50%;
    background-color: currentColor;
    transition: all 0.4s var(--rda-transition-lux);
    transform: translateX(-50%);
}
.nav-link:hover::after {
    width: 100%;
}

/* Contact button (Nous écrire) — explicit hover state for both internal pages and
   scrolled home state. Tailwind CDN's JIT can miss dynamically-injected hover
   classes, so we lock the contract in CSS to guarantee terracotta text on hover. */
#nav-btn-desktop {
    transition: background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease;
}
#navbar.rda-nav-internal #nav-btn-desktop:hover,
#navbar.text-navy #nav-btn-desktop:hover {
    background-color: var(--rda-navy) !important;
    color: var(--rda-creme) !important;
    border-color: var(--rda-navy) !important;
}

/* ========================================
   6. COMPOSANTS UI — Boutons custom
   ======================================== */
.btn-lux {
    position: relative;
    overflow: hidden;
    z-index: 1;
}
.btn-lux::before {
    content: '';
    position: absolute;
    top: 0; left: 0; width: 100%; height: 100%;
    background-color: var(--rda-navy);
    z-index: -1;
    transform: scaleX(0);
    transform-origin: right;
    transition: transform 0.5s var(--rda-transition-lux);
}
.btn-lux:hover::before {
    transform: scaleX(1);
    transform-origin: left;
}
.btn-lux-terracotta::before { background-color: var(--rda-creme); }
.btn-lux-creme::before { background-color: var(--rda-terracotta); }
/* Variante du bouton d'envoi du formulaire : le voile monte en bleu nuit, et le
   texte reste creme. Avec le voile creme des autres boutons, un texte creme
   disparaitrait ; ici c'est l'inverse, un texte bleu nuit serait illisible. */
.btn-lux-navy::before { background-color: var(--rda-navy); }

/* ========================================
   7. COMPOSANTS UI — Images & Produits
   ======================================== */
.img-vintage {
    transition: transform 1.2s var(--rda-transition-lux), filter 0.8s ease, box-shadow 0.8s ease;
}
.group:hover .img-vintage {
    transform: scale(1.05);
}

/* Pas de zoom au survol des vignettes de grille : le mockup en situation suffit,
   et un agrandissement simultane brouillait le fondu. */

/* Vignette de grille : le mockup en situation apparait au survol, en fondu croise.
   Le conteneur porte « has-hover » seulement si le produit a un mockup ; sinon la
   vignette se comporte comme avant. Les regles de taille (height/object-fit) plus
   bas s'appliquent aux deux images, qui se superposent donc exactement. */
.rda-thumb {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    /* Hauteur reprise des regles de vignette plus bas, pour que toutes les cartes
       d'une rangee gardent la meme hauteur d'image. */
    --rda-vignette-h: 400px;
    height: var(--rda-vignette-h);
}
/* Cadre au rapport du visuel a plat, pose en variable CSS par le PHP.
   Les deux images le remplissent, donc le survol se superpose EXACTEMENT au visuel
   au lieu de deborder sur le vide que le « contain » laisse sur les cotes. Le cadre
   ne depasse jamais la largeur de la carte : sur un visuel paysage il perd de la
   hauteur et reste centre dans la hauteur commune. */
.rda-thumb-cadre {
    position: relative;
    display: block;
    width: min(100%, calc(var(--rda-vignette-h) * var(--rda-ratio, 0.7)));
    aspect-ratio: var(--rda-ratio, 0.7);
}
.rda-thumb .rda-thumb-hover {
    position: absolute;
    inset: 0;
    opacity: 0;
    pointer-events: none;
}
/* Le mockup remplit tout le cadre (recadrage « cover »), le visuel du dessous y reste
   en « contain » : le cadre etant a son rapport, cela revient au meme, mais un visuel
   au rapport legerement different ne serait pas rogne pour autant.
   Les dimensions sont redeclarees ici parce que les regles de vignette plus bas posent
   « height: 400px !important » sur toutes les images de carte, ce qui creverait le
   cadre. Meme raison pour la transition : les regles du thema posent
   « transition: transform ..., filter ... » avec une specificite superieure, ce qui
   evincait l'opacite et rendait l'apparition instantanee. */
.woocommerce ul.products li.product .rda-thumb-cadre .rda-thumb-main,
.rda-home-grid ul.products li.product .rda-thumb-cadre .rda-thumb-main,
.rda-shop-content ul.products li.product .rda-thumb-cadre .rda-thumb-main,
.related.products ul.products li.product .rda-thumb-cadre .rda-thumb-main,
.upsells.products ul.products li.product .rda-thumb-cadre .rda-thumb-main,
.woocommerce ul.products li.product .rda-thumb .rda-thumb-hover,
.rda-home-grid ul.products li.product .rda-thumb .rda-thumb-hover,
.rda-shop-content ul.products li.product .rda-thumb .rda-thumb-hover,
.related.products ul.products li.product .rda-thumb .rda-thumb-hover,
.upsells.products ul.products li.product .rda-thumb .rda-thumb-hover {
    width: 100% !important;
    height: 100% !important;
    max-height: none !important;
}
.woocommerce ul.products li.product .rda-thumb .rda-thumb-hover,
.rda-home-grid ul.products li.product .rda-thumb .rda-thumb-hover,
.rda-shop-content ul.products li.product .rda-thumb .rda-thumb-hover,
.related.products ul.products li.product .rda-thumb .rda-thumb-hover,
.upsells.products ul.products li.product .rda-thumb .rda-thumb-hover {
    object-fit: cover !important;
    transition: opacity 0.7s var(--rda-transition-lux) !important;
    /* Filet sur le mockup : il est en « cover » donc a bords francs, un liseré le
       detache du fond creme de la carte. */
    border: 1px solid rgba(var(--rda-navy-rgb), 0.14);
    box-sizing: border-box;
}
/* Respiration entre l'affiche et son titre, sur toutes les grilles (accueil, boutique,
   produits similaires). Le cadre remplissant desormais sa boite exactement, il ne
   restait que la demi-interligne du titre, soit 12 px : trop serre. */
.rda-product-title { margin-top: 12px; }
/* Fondu enchaine : le mockup apparait PAR-DESSUS le visuel, qui reste en place.
   Ne pas masquer .rda-thumb-main, sinon on voit un remplacement et non un fondu. */
li.product:hover .rda-thumb.has-hover .rda-thumb-hover { opacity: 1; }
/* Sans survol reel (tactile), on ne charge pas d'attente visuelle : image principale seule. */
@media (hover: none) {
    .rda-thumb .rda-thumb-hover { display: none; }
}
@media (prefers-reduced-motion: reduce) {
    .rda-thumb .rda-thumb-main,
    .rda-thumb .rda-thumb-hover { transition-duration: 0.01ms; }
}

/* ========================================
   8. COMPOSANTS UI — Formulaires
   ======================================== */
.input-epistolaire {
    background-color: transparent;
    border: none;
    border-bottom: 1px solid rgba(var(--rda-navy-rgb), 0.3);
    border-radius: 0;
    padding: 0.75rem 0;
    width: 100%;
    font-family: 'EB Garamond', serif;
    font-size: 22px;
    line-height: 1.3em;
    color: var(--rda-navy);
    transition: border-color 0.4s ease, background-color 0.4s ease;
}
.input-epistolaire:focus {
    outline: none;
    border-bottom-color: var(--rda-terracotta);
    background-color: rgba(255, 255, 255, 0.4);
}
.input-epistolaire::placeholder {
    color: var(--rda-navy);
    opacity: 0.5;
}

.woocommerce form .form-row input.input-text:focus,
.woocommerce form .form-row textarea:focus {
    border-color: var(--rda-terracotta);
}

/* ========================================
   9. SECTIONS SPECIFIQUES — Homepage
   ======================================== */
.rda-section-navy {
    background-color: var(--rda-navy);
    color: var(--rda-creme);
}
.rda-section-navy a {
    color: var(--rda-terracotta);
}
.rda-section-navy h2,
.rda-section-navy h3 {
    color: var(--rda-creme);
}

.rda-section-creme {
    background-color: var(--rda-creme);
}

.rda-bg-papier {
    background-image: url('images/papier-creme.webp');
    background-size: cover;
    background-position: center;
}

/* ========================================
   10. WOOCOMMERCE — Couleurs
   ======================================== */
.woocommerce span.onsale {
    background-color: var(--rda-terracotta);
    color: var(--rda-creme);
}

/* WC notices — restyled in case they show despite auto-cart-slide-out */
.woocommerce-message,
.woocommerce-info,
.woocommerce-notices-wrapper .woocommerce-message,
.woocommerce-notices-wrapper .woocommerce-info {
    background: #FFFFFF;
    border: 0;
    border-left: 3px solid var(--rda-terracotta);
    padding: 18px 22px;
    font-family: 'EB Garamond', serif;
    font-size: 16px;
    color: var(--rda-navy);
    margin: 0 0 24px;
    box-shadow: 0 6px 22px rgba(26, 43, 60, 0.07);
    list-style: none;
    border-radius: 0;
    position: relative;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    flex-wrap: wrap;
}
.woocommerce-message::before,
.woocommerce-info::before,
.woocommerce-error::before {
    display: none;
}
/* Erreurs : layout block + une erreur par ligne (le <ul> peut contenir N <li>) */
.woocommerce-error,
.woocommerce-notices-wrapper .woocommerce-error,
ul.woocommerce-error,
.woocommerce-NoticeGroup .woocommerce-error {
    background: #FFFFFF;
    border: 0;
    border-left: 3px solid #b94343;
    padding: 18px 22px !important;
    font-family: 'EB Garamond', serif;
    font-size: 16px;
    color: var(--rda-navy);
    margin: 0 0 24px;
    box-shadow: 0 6px 22px rgba(26, 43, 60, 0.07);
    list-style: none !important;
    border-radius: 0;
    display: block !important;
}
.woocommerce-error li,
ul.woocommerce-error li,
.woocommerce-NoticeGroup .woocommerce-error li {
    display: list-item !important;
    list-style: none !important;
    margin: 0 0 8px 0 !important;
    padding: 0 0 0 22px !important;
    position: relative;
    line-height: 1.4;
}
.woocommerce-error li:last-child {
    margin-bottom: 0 !important;
}
.woocommerce-error li::before {
    content: '✗';
    position: absolute;
    left: 0;
    top: 0;
    color: #b94343;
    font-weight: 600;
    font-family: 'Jost', sans-serif;
}
.woocommerce-message a.button,
.woocommerce-message .button {
    background: var(--rda-terracotta) !important;
    color: var(--rda-creme) !important;
    border: 0 !important;
    border-radius: 0 !important;
    font-family: 'Jost', sans-serif !important;
    text-transform: uppercase !important;
    letter-spacing: 0.12em !important;
    font-size: 12px !important;
    padding: 10px 22px !important;
    margin: 0 !important;
    text-decoration: none !important;
    transition: background-color 0.3s ease;
    line-height: 1 !important;
    flex-shrink: 0;
}
.woocommerce-message a.button:hover,
.woocommerce-message .button:hover {
    background: var(--rda-navy) !important;
}
.woocommerce-message a.wc-forward {
    order: 2;
}

.woocommerce .star-rating span::before {
    color: var(--rda-terracotta);
}

.woocommerce div.product .woocommerce-tabs ul.tabs li.active a {
    color: var(--rda-navy);
    border-bottom-color: var(--rda-terracotta);
}

/* ========================================
   11. RESPONSIVE
   ======================================== */
@media (max-width: 639px) {
    h1.font-heading { line-height: 1.7em !important; }
    h2.font-heading { line-height: 1.2em !important; }
}

/* ========================================
   12. UTILITAIRES
   ======================================== */
.grecaptcha-badge {
    visibility: hidden !important;
}

.rda-overline {
    font-family: 'Jost', sans-serif;
    color: var(--rda-terracotta);
    text-transform: uppercase;
    letter-spacing: 0.15em;
    font-size: 14px;
    font-weight: 600;
}

.rda-line {
    width: 64px;
    height: 1px;
    background-color: rgba(var(--rda-navy-rgb), 0.2);
    margin: 2.5rem auto;
}

.rda-frame {
    border: 8px solid white;
    box-shadow: 0 20px 60px rgba(var(--rda-navy-rgb), 0.1);
}

/* ========================================
   13. HOMEPAGE — Headings & Text blocks
   ======================================== */

/* Overline terracotta */
.rda-overline-heading {
    font-family: 'Jost', sans-serif !important;
    font-size: 14px !important;
    font-weight: 600 !important;
    text-transform: uppercase !important;
    letter-spacing: 3px !important;
    color: var(--rda-terracotta) !important;
}

/* Titre H1/H2 creme */
.rda-title-creme {
    font-family: 'CarlaSans', sans-serif !important;
    font-weight: 300 !important;
    text-transform: uppercase !important;
    letter-spacing: 3px !important;
    line-height: 1.3em !important;
    color: var(--rda-creme) !important;
}

/* Titre H2 navy */
.rda-title-navy {
    font-family: 'CarlaSans', sans-serif !important;
    font-weight: 400 !important;
    text-transform: uppercase !important;
    letter-spacing: 2px !important;
    line-height: 1.3em !important;
    color: var(--rda-navy) !important;
}

/* Sous-titre prix/meta creme transparent */
.rda-subtitle-creme {
    font-family: 'Jost', sans-serif !important;
    font-size: 16px !important;
    letter-spacing: 3px !important;
    color: rgba(245, 242, 233, 0.7) !important;
}

/* Titre H3 cartes service (terracotta) */
.rda-card-title {
    font-family: 'Jost', sans-serif !important;
    font-size: 22px !important;
    font-weight: 400 !important;
    text-transform: uppercase !important;
    letter-spacing: 3px !important;
    color: var(--rda-terracotta) !important;
}

/* Corps de texte standard */
.rda-body-text,
.rda-body-text p {
    font-family: 'EB Garamond', serif !important;
    font-size: 22px !important;
    line-height: 1.3em !important;
    font-weight: 300 !important;
    color: var(--rda-navy) !important;
}

/* Corps de texte secondaire (opacite reduite) */
.rda-body-text-light,
.rda-body-text-light p {
    font-family: 'EB Garamond', serif !important;
    font-size: 22px !important;
    line-height: 1.3em !important;
    font-weight: 300 !important;
    color: rgba(26, 43, 60, 0.8) !important;
}

/* Corps de texte italic */
.rda-body-text-italic,
.rda-body-text-italic p {
    font-family: 'EB Garamond', serif !important;
    font-size: 22px !important;
    line-height: 1.3em !important;
    font-weight: 300 !important;
    font-style: italic !important;
    color: rgba(26, 43, 60, 0.7) !important;
}
.rda-body-text-italic strong {
    font-weight: 400 !important;
    font-style: normal !important;
    color: rgba(26, 43, 60, 0.9) !important;
}

/* Corps de texte creme */
.rda-body-text-creme,
.rda-body-text-creme p {
    font-family: 'EB Garamond', serif !important;
    font-size: 22px !important;
    line-height: 1.3em !important;
    font-weight: 300 !important;
    color: rgba(245, 242, 233, 0.9) !important;
}
.rda-body-text-creme strong {
    font-weight: 400 !important;
    color: var(--rda-creme) !important;
}

/* Liste bullets creme */
.rda-list-creme,
.rda-list-creme ul,
.rda-list-creme li {
    font-family: 'EB Garamond', serif !important;
    font-size: 20px !important;
    line-height: 1.6 !important;
    font-weight: 300 !important;
    color: rgba(245, 242, 233, 0.8) !important;
    list-style: none !important;
    padding-left: 0 !important;
}

/* Texte centre */
.rda-text-centered,
.rda-text-centered p {
    max-width: 900px !important;
    margin-left: auto !important;
    margin-right: auto !important;
    text-align: center !important;
}
.rda-text-narrow,
.rda-text-narrow p {
    max-width: 720px !important;
    margin-left: auto !important;
    margin-right: auto !important;
}

/* ========================================
   14. HOMEPAGE — Buttons & Containers
   ======================================== */

/* Carte service (bordure blanche) */
.rda-card-white-border {
    border: 1px solid rgba(255, 255, 255, 0.75) !important;
    padding: 48px !important;
}

/* Carte service (bordure terracotta) */
.rda-card-terra-border {
    border: 1px solid var(--rda-terracotta) !important;
    padding: 48px !important;
}

/* Container formulaire */
.rda-form-container {
    background-color: #FFFFFF !important;
    padding: 40px 64px !important;
    border: 1px solid rgba(26, 43, 60, 0.05) !important;
    box-shadow: 0 20px 60px rgba(26, 43, 60, 0.15) !important;
}

/* ========================================
   15. EFFETS & ANIMATIONS
   ======================================== */

/* Scroll indicator (hero) */
.scroll-indicator-line {
    animation: scrollLine 2.5s infinite cubic-bezier(0.645, 0.045, 0.355, 1);
}

/* Image frame (exposition) */
.rda-frame img {
    border: 8px solid white !important;
    box-shadow: 0 20px 60px rgba(26, 43, 60, 0.4) !important;
    transition: transform 1.2s cubic-bezier(0.25, 1, 0.5, 1), box-shadow 0.8s ease !important;
}
.rda-frame:hover img {
    transform: scale(1.03) !important;
    box-shadow: 0 30px 60px rgba(26, 43, 60, 0.45) !important;
}

/* WooCommerce cart count badge */
.cart-count {
    position: absolute;
    top: -6px;
    right: -8px;
    background-color: var(--rda-terracotta);
    color: var(--rda-creme);
    font-family: 'Jost', sans-serif;
    font-size: 10px;
    font-weight: 600;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
}

/* ========================================
   16. WOOCOMMERCE — Styles natifs RDA
   ======================================== */

/* Neutralize Tailwind CDN's "columns-N" multi-column utility — WC adds <div class="woocommerce columns-4">
   and <ul class="products columns-4"> which Tailwind interprets as CSS columns, causing flow chaos. */
.woocommerce.columns-1, .woocommerce.columns-2, .woocommerce.columns-3,
.woocommerce.columns-4, .woocommerce.columns-5, .woocommerce.columns-6,
ul.products.columns-1, ul.products.columns-2, ul.products.columns-3,
ul.products.columns-4, ul.products.columns-5, ul.products.columns-6 {
    columns: auto !important;
    column-count: auto !important;
    -webkit-columns: auto !important;
    -moz-columns: auto !important;
}

/* --- Product archive grid (covers home shortcode + shop/archive) --- */
/* align-items: start → each cell takes its natural height (no stretch).
   Title sticks under the image, no empty gap for landscape thumbnails. */
.woocommerce ul.products,
.woocommerce-page ul.products,
.rda-home-grid ul.products {
    display: grid !important;
    grid-template-columns: repeat(4, 1fr) !important;
    gap: 40px !important;
    list-style: none !important;
    padding: 0 !important;
    margin: 0 0 32px !important;
    align-items: start !important;
}
/* Shop/archive with sidebar: 3 cols on desktop */
.rda-shop-content ul.products {
    display: grid !important;
    grid-template-columns: repeat(3, 1fr) !important;
    gap: 32px !important;
    list-style: none !important;
    padding: 0 !important;
    margin: 0 0 32px !important;
    align-items: start !important;
}
@media (max-width: 1024px) {
    .woocommerce ul.products,
    .woocommerce-page ul.products,
    .rda-home-grid ul.products,
    .rda-shop-content ul.products {
        grid-template-columns: repeat(2, 1fr) !important;
        gap: 24px !important;
    }
}
@media (max-width: 480px) {
    .woocommerce ul.products,
    .woocommerce-page ul.products,
    .rda-home-grid ul.products,
    .rda-shop-content ul.products {
        grid-template-columns: repeat(2, 1fr) !important;
        gap: 16px !important;
    }
}
.woocommerce ul.products li.product,
.woocommerce-page ul.products li.product,
.rda-home-grid ul.products li.product,
.rda-shop-content ul.products li.product {
    margin: 0 !important;
    padding: 0 !important;
    width: auto !important;
    max-width: none !important;
    float: none !important;
    clear: none !important;
    list-style: none !important;
    position: relative !important;
    display: flex !important;
    flex-direction: column !important;
}
/* Swiper carousel slides: Swiper assigns inline width — let it win */
.rda-related-swiper ul.products li.product,
.rda-upsells-swiper ul.products li.product,
.rda-related-swiper .swiper-slide.product,
.rda-upsells-swiper .swiper-slide.product {
    width: auto !important;
    flex-shrink: 0 !important;
}
.woocommerce ul.products li.product a img,
.rda-home-grid ul.products li.product a img,
.rda-shop-content ul.products li.product a img,
.rda-related-swiper ul.products li.product a img,
.rda-upsells-swiper ul.products li.product a img,
.related.products ul.products li.product a img,
.upsells.products ul.products li.product a img {
    display: block;
    width: 100% !important;
    height: 400px !important;
    max-height: 400px !important;
    aspect-ratio: auto !important;
    object-fit: contain !important;
    object-position: center !important;
    background: transparent;
}
@media (max-width: 768px) {
    .woocommerce ul.products li.product a img,
    .rda-home-grid ul.products li.product a img,
    .rda-shop-content ul.products li.product a img,
    .related.products ul.products li.product a img,
    .upsells.products ul.products li.product a img {
        height: 280px !important;
    }
    /* Le cadre de vignette calcule sa largeur sur cette hauteur : les deux valeurs
       doivent changer ensemble, sinon le cadre garde la largeur du grand format.
       220 et non 280 : a 280, la largeur voulue (280 x 0,67 = 187) depasse celle de la
       colonne (156 px a 375), le cadre est donc rogne en largeur et se retrouve plus
       court que la boite, laissant 23 px de vide entre l'affiche et son titre. A 220 la
       hauteur redevient le facteur limitant, le cadre remplit sa boite, le vide
       disparait et toutes les vignettes d'une rangee tombent a la meme hauteur. */
    .rda-thumb { --rda-vignette-h: 220px; }
}
.woocommerce ul.products li.product > a:first-of-type,
.rda-home-grid ul.products li.product > a:first-of-type,
.rda-shop-content ul.products li.product > a:first-of-type {
    display: flex;
    flex-direction: column;
    text-decoration: none;
    flex: 1 1 auto;
    text-align: center;
    align-items: center;
}
.woocommerce ul.products li.product .woocommerce-loop-product__title,
.rda-home-grid ul.products li.product .woocommerce-loop-product__title,
.rda-shop-content ul.products li.product .woocommerce-loop-product__title {
    margin-top: 12px !important;
    text-align: center;
}
.woocommerce ul.products li.product .price,
.rda-home-grid ul.products li.product .price,
.rda-shop-content ul.products li.product .price {
    display: block;
    margin-top: 2px;
    text-align: center;
}
.woocommerce ul.products li.product .button,
.rda-home-grid ul.products li.product .button,
.rda-shop-content ul.products li.product .button {
    margin-top: 6px !important;
    align-self: center;
}
/* Vignettes produit — drop-shadow alpha-aware (suit la forme réelle de l'image, pas la box).
   Une seule règle au lieu de deux dupliquées (cause du "bug" de double-rendu). */
.woocommerce ul.products li.product a img {
    filter: drop-shadow(0 8px 20px rgba(26, 43, 60, 0.14)) drop-shadow(0 2px 6px rgba(26, 43, 60, 0.08));
}
/* Aucun effet au survol des vignettes de grille : ni zoom ni variation d'ombre.
   Seul le mockup en situation apparait, en fondu. */
.woocommerce ul.products li.product .woocommerce-loop-product__title {
    font-family: 'CarlaSans', sans-serif;
    font-weight: 600;
    font-size: 16px;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--rda-navy);
    margin-top: 17px;
    font-variant-ligatures: no-common-ligatures;
    font-feature-settings: "liga" 0, "clig" 0;
}
.woocommerce ul.products li.product .price {
    font-family: 'Jost', sans-serif;
    font-size: 14px;
    color: var(--rda-terracotta);
    margin-top: 4px;
}
.woocommerce ul.products li.product .button {
    font-family: 'Jost', sans-serif;
    font-size: 14px;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    background-color: var(--rda-terracotta);
    color: var(--rda-creme);
    border: none;
    border-radius: 0;
    padding: 10px 20px;
    margin-top: 8px;
    transition: background-color 0.3s ease;
}
.woocommerce ul.products li.product .button:hover {
    background-color: var(--rda-navy);
}

/* --- Single product --- */
.woocommerce div.product .product_title {
    font-family: 'CarlaSans', sans-serif;
    font-weight: 400;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    font-size: 32px;
    color: var(--rda-navy);
    font-variant-ligatures: no-common-ligatures;
    font-feature-settings: "liga" 0, "clig" 0;
}
.woocommerce div.product p.price,
.woocommerce div.product span.price {
    font-family: 'Jost', sans-serif;
    color: var(--rda-terracotta);
    font-size: 22px;
}
.woocommerce div.product .woocommerce-product-details__short-description {
    font-family: 'EB Garamond', serif;
    font-size: 18px;
    line-height: 1.5;
    color: rgba(26, 43, 60, 0.8);
}
.woocommerce div.product form.cart .button {
    font-family: 'Jost', sans-serif;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    font-size: 14px;
    background-color: var(--rda-terracotta);
    color: var(--rda-creme);
    border: none;
    border-radius: 0;
    padding: 16px 40px;
    transition: background-color 0.3s ease;
}
.woocommerce div.product form.cart .button:hover {
    background-color: var(--rda-navy);
}
.woocommerce div.product .woocommerce-tabs ul.tabs {
    font-family: 'Jost', sans-serif;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    font-size: 13px;
}
.woocommerce div.product .woocommerce-tabs ul.tabs li.active a {
    color: var(--rda-navy);
    border-bottom-color: var(--rda-terracotta);
}

/* --- Cart page --- */
.woocommerce-cart table.cart th {
    font-family: 'Jost', sans-serif;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    font-size: 12px;
    color: var(--rda-navy);
    border-bottom: 2px solid var(--rda-navy);
}
.woocommerce-cart table.cart td {
    font-family: 'EB Garamond', serif;
    font-size: 16px;
    vertical-align: middle;
    border-bottom: 1px solid rgba(26, 43, 60, 0.1);
}
.woocommerce-cart table.cart .product-name a {
    font-family: 'CarlaSans', sans-serif;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    font-size: 14px;
    color: var(--rda-navy);
    text-decoration: none;
}
.woocommerce-cart .cart_totals h2 {
    font-family: 'CarlaSans', sans-serif;
    text-transform: uppercase;
    letter-spacing: 0.05em;
}
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.woocommerce #respond input#submit {
    font-family: 'Jost', sans-serif;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    border-radius: 0;
    transition: background-color 0.3s ease, color 0.3s ease;
}
.woocommerce a.button.alt,
.woocommerce button.button.alt,
.woocommerce input.button.alt,
.woocommerce #respond input#submit.alt {
    background-color: var(--rda-terracotta);
    color: var(--rda-creme);
    border: none;
}
.woocommerce a.button.alt:hover,
.woocommerce button.button.alt:hover,
.woocommerce input.button.alt:hover {
    background-color: var(--rda-navy);
    color: var(--rda-creme);
}

/* --- Checkout page --- */
.woocommerce-checkout h3 {
    font-family: 'CarlaSans', sans-serif;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    font-size: 24px;
    color: var(--rda-navy);
}
.woocommerce form .form-row label {
    font-family: 'Jost', sans-serif;
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: rgba(26, 43, 60, 0.7);
}
.woocommerce form .form-row input.input-text,
.woocommerce form .form-row textarea,
.woocommerce form .form-row select {
    font-family: 'EB Garamond', serif;
    font-size: 16px;
    border: 1px solid rgba(26, 43, 60, 0.2);
    border-radius: 0;
    padding: 12px 16px;
    color: var(--rda-navy);
    transition: border-color 0.3s ease;
}.woocommerce form .form-row select {	width: 100%;	height: 55px;	font-size: 18px;}
.woocommerce form .form-row input.input-text:focus,
.woocommerce form .form-row textarea:focus,
.woocommerce form .form-row select:focus {
    border-color: var(--rda-terracotta);
    outline: none;
    box-shadow: none;
}
.woocommerce #place_order {
    font-family: 'Jost', sans-serif;
    text-transform: uppercase;
    letter-spacing: 0.15em;
    font-size: 14px;
    background-color: var(--rda-terracotta);
    color: var(--rda-creme);
    border: none;
    border-radius: 0;
    padding: 18px 40px;
    width: 100%;
}
.woocommerce #place_order:hover {
    background-color: var(--rda-navy);
}

/* --- My Account page --- */
.woocommerce-MyAccount-navigation ul {
    list-style: none;
    padding: 0;
    border-right: 1px solid rgba(26, 43, 60, 0.1);
}
.woocommerce-MyAccount-navigation ul li a {
    font-family: 'Jost', sans-serif;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    font-size: 14px;
    color: rgba(26, 43, 60, 0.6);
    padding: 12px 24px;
    display: block;
    transition: color 0.3s ease;
    text-decoration: none;
}
.woocommerce-MyAccount-navigation ul li a:hover,
.woocommerce-MyAccount-navigation ul li.is-active a {
    color: var(--rda-terracotta);
}
.woocommerce-MyAccount-content {
    font-family: 'EB Garamond', serif;
    font-size: 18px;
    line-height: 1.6;
}

/* --- Notices / Messages --- */
.woocommerce-message {
    border-top-color: var(--rda-terracotta);
    background-color: rgba(195, 106, 77, 0.05);
    font-family: 'EB Garamond', serif;
}
.woocommerce-message::before {
    color: var(--rda-terracotta);
}
.woocommerce-error {
    border-top-color: #c00;
}
.woocommerce-info {
    border-top-color: var(--rda-navy);
}

/* --- Sale badge --- */
.woocommerce span.onsale {
    background-color: var(--rda-terracotta);
    color: var(--rda-creme);
    font-family: 'Jost', sans-serif;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    font-size: 12px;
    border-radius: 0;
    padding: 4px 12px;
    min-height: auto;
    line-height: 1.4;
}

/* --- Mini cart sidebar --- */
#rda-cart-sidebar .woocommerce-mini-cart {
    list-style: none;
    padding: 0;
}
#rda-cart-sidebar .woocommerce-mini-cart-item {
    padding: 16px 0;
    border-bottom: 1px solid rgba(26, 43, 60, 0.1);
    font-family: 'EB Garamond', serif;
}
#rda-cart-sidebar .woocommerce-mini-cart-item a:not(.remove) {
    color: var(--rda-navy);
    text-decoration: none;
    font-size: 16px;
}
#rda-cart-sidebar .mini_cart_item .quantity {
    font-family: 'Jost', sans-serif;
    font-size: 14px;
    color: var(--rda-terracotta);
}
#rda-cart-sidebar .woocommerce-mini-cart__total {
    font-family: 'Jost', sans-serif;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    font-size: 14px;
    padding: 16px 0;
    border-top: 2px solid var(--rda-navy);
}

/* --- Product category archive description --- */
.term-description {
    font-family: 'EB Garamond', serif;
    font-size: 18px;
    line-height: 1.5;
    color: rgba(26, 43, 60, 0.8);
    margin-bottom: 40px;
}

/* ========================================
   17. SINGLE PRODUCT — Layout Postero-style
   ======================================== */

/* Two-column layout: gallery left, summary right (sticky) */
.rda-product-layout {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 60px;
    align-items: start;
    margin-bottom: 80px;
}
@media (max-width: 1024px) {
    .rda-product-layout {
        grid-template-columns: 1fr;
        gap: 40px;
    }
}

/* Gallery — square container, image object-fit contain (no crop) */
.rda-product-gallery {
    position: relative;
}
.rda-product-gallery .woocommerce-product-gallery {
    width: 100% !important;
    position: relative;
}
/* Full-width image (no aspect-ratio constraint) — natural ratio of the visual */
.rda-product-gallery .woocommerce-product-gallery__wrapper {
    background: transparent;
    box-sizing: border-box;
    position: relative;
    overflow: visible;
    width: 100%;
}
/* Produit a UNE seule image : pas de flexslider, la diapositive doit occuper
   toute la largeur. On ne cible que ce cas, via l'enchainement direct
   galerie > wrapper > image, qui n'existe que hors slider. */
.rda-product-gallery .woocommerce-product-gallery > .woocommerce-product-gallery__wrapper > .woocommerce-product-gallery__image {
    width: 100% !important;
    height: auto !important;
    display: block !important;
}
/* Produit a PLUSIEURS images : flexslider pose lui-meme la largeur de la piste
   et de chaque diapositive, ainsi que la hauteur du viewport. Ne rien forcer ici :
   un width/height !important faisait prendre a chaque diapositive la largeur de
   toute la piste, elles s'empilaient et la galerie montait a 28 000 px. */
.rda-product-gallery .flex-viewport .woocommerce-product-gallery__image {
    display: block;
}
/* Mode fondu : flexslider ne cree PAS de .flex-viewport, il superpose les
   diapositives et ne donne aucune hauteur a la piste. Sans cela la piste retombe
   a 0 et les vignettes de navigation viennent se placer derriere l'image.
   On empile les diapositives dans une grille d'une seule cellule : la piste prend
   la hauteur de la plus haute, et les vignettes reprennent leur place dessous. */
.rda-product-gallery .woocommerce-product-gallery:not(:has(.flex-viewport)) .woocommerce-product-gallery__wrapper {
    display: grid;
    grid-template-columns: 1fr;
    /* Indispensable : la hauteur de la piste suit la diapositive affichee, mais les
       autres diapositives, plus hautes, debordent dessous. Invisibles a l'opacite 0,
       elles recouvraient les vignettes de navigation et captaient leurs clics.
       Le decoupage supprime le debordement ET les evenements qui vont avec. */
    overflow: hidden;
}
.rda-product-gallery .woocommerce-product-gallery:not(:has(.flex-viewport)) .woocommerce-product-gallery__wrapper > .woocommerce-product-gallery__image {
    grid-area: 1 / 1;
}
/* Garde-fou : si flexslider pose malgre tout une hauteur en dur sur la galerie, elle
   ne compte que les diapositives et les vignettes de navigation debordent dessous,
   le titre passant par-dessus en mobile. La galerie doit rester en hauteur libre. */
.rda-product-gallery .woocommerce-product-gallery:not(:has(.flex-viewport)) {
    height: auto !important;
}
/* Cadre d'aperçu au format des mockups (4:5). Le visuel du produit n'a pas le même
   rapport que les mises en situation : sans cadre commun la galerie changeait de
   hauteur à chaque diapositive. Le visuel est donc contenu dans la zone, sur un fond
   blanc à demi transparent qui laisse voir la couleur de la page. */
.rda-product-gallery .woocommerce-product-gallery__image a {
    display: block;
    width: 100%;
    aspect-ratio: 4 / 5;
    box-sizing: border-box;
    background: #FFFFFF;
    cursor: zoom-in;
}
/* Les mises en situation sont deja au format du cadre : elles le remplissent bord
   a bord. Seul le visuel de l'affiche, a plat et d'un autre rapport, prend une
   marge interieure pour ne pas toucher les bords. */
.rda-product-gallery .rda-diapo-visuel a {
    padding: 20px;
}
/* Pas d'ombre portée ici : elle se dessine HORS de la boîte de l'image, sur une
   trentaine de pixels, alors que la marge du cadre n'en fait que dix. Le visuel
   semblait donc déborder par le bas. Le panneau blanc suffit à détacher l'image. */
.rda-product-gallery .woocommerce-product-gallery__image img {
    width: 100% !important;
    height: 100% !important;
    max-width: 100% !important;
    display: block;
    filter: none;
    /* Les mises en situation sortent en 928x1152, soit un rapport de 0,8055 quand le cadre
       est a 0,8 pile : contenues, elles laissaient deux filets blancs en haut et en bas.
       Elles remplissent donc le cadre, au prix d'un recadrage de 0,7 % invisible. */
    object-fit: cover !important;
}
/* Le visuel a plat, lui, doit rester entier : c'est l'affiche, on ne la rogne pas. */
.rda-product-gallery .rda-diapo-visuel img {
    object-fit: contain !important;
}

/* Disable the WC inline zoom-mousein effect (we removed gallery-zoom support but stale CSS may persist) */
.rda-product-gallery .woocommerce-product-gallery__trigger,
.woocommerce-product-gallery__trigger {
    display: none !important;
}

/* Feather zoom button — circular white button top-right corner */
.rda-zoom-trigger {
    position: absolute;
    top: 16px;
    right: 16px;
    z-index: 10;
    background: white;
    border: 1px solid rgba(26, 43, 60, 0.12);
    border-radius: 50%;
    width: 44px;
    height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: transform 0.25s ease, box-shadow 0.25s ease;
    box-shadow: 0 4px 12px rgba(26, 43, 60, 0.1);
    padding: 0;
}
.rda-zoom-trigger:hover {
    transform: scale(1.08);
    box-shadow: 0 6px 16px rgba(26, 43, 60, 0.16);
}
.rda-zoom-trigger svg {
    color: var(--rda-navy);
    stroke: var(--rda-navy);
    width: 18px;
    height: 18px;
}
.rda-product-gallery .flex-control-thumbs {
    display: flex;
    gap: 8px;
    margin-top: 12px;
    list-style: none;
    padding: 0;
}
/* Les vignettes étaient à 80 px fixes. Tant que les produits n'avaient qu'une image
   la bande n'existait pas ; à cinq vignettes elle impose 432 px de largeur minimale
   (5 × 80 + 4 × 8) à la colonne de galerie, donc à toute la grille du produit, qui
   débordait l'écran en mobile. Les vignettes se partagent désormais la place
   disponible ; le plafond à 80 px garde le rendu desktop inchangé. */
.rda-product-gallery .flex-control-thumbs li {
    flex: 1 1 0;
    min-width: 0;
    max-width: 80px;
    cursor: pointer;
    opacity: 0.5;
    transition: opacity 0.3s ease;
}
.rda-product-gallery .flex-control-thumbs li img {
    width: 100%;
    height: auto;
}
/* La vignette active s'allume. L'ancienne regle visait « li .flex-active », or
   flexslider pose cette classe sur l'IMG : l'opacite pleine s'appliquait a l'image
   pendant que le li parent restait a 0.5, et les deux se multipliaient. La vignette
   active ne s'allumait donc jamais. */
.rda-product-gallery .flex-control-thumbs li:hover,
.rda-product-gallery .flex-control-thumbs li:has(.flex-active) {
    opacity: 1;
}
.rda-product-gallery .flex-control-thumbs li:has(.flex-active) img {
    outline: 1px solid var(--rda-terracotta);
    outline-offset: 2px;
}


/* C'est la GALERIE qui reste au defilement, pas le resume.
   La colonne de droite est la plus haute des deux (formats, papiers, options,
   accordeon) : la coller n'avait guere d'effet, alors que l'affiche, elle, gagne a
   rester sous les yeux pendant qu'on parcourt les options. Elle se decolle a la fin
   de la mise en page a deux colonnes, c'est-a-dire juste avant les produits
   similaires, qui sont le seul contenu place apres.
   « align-items: start » sur la grille est indispensable : sans lui l'element de
   grille prend toute la hauteur de la rangee et n'a plus de place pour coller. */
.rda-product-summary {
    position: relative;
}
@media (min-width: 1025px) {
    .rda-product-gallery {
        position: sticky;
        top: 120px;
    }
}

/* Title */
.rda-single-product .product_title {
    font-family: 'CarlaSans', sans-serif !important;
    font-weight: 400;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    font-size: 28px;
    line-height: 1.3;
    color: var(--rda-navy);
    margin-bottom: 16px;
    font-variant-ligatures: no-common-ligatures;
    font-feature-settings: "liga" 0, "clig" 0;
}

/* Price */
.rda-single-product p.price,
.rda-single-product span.price {
    font-family: 'Jost', sans-serif;
    font-size: 24px;
    color: var(--rda-terracotta);
    margin-bottom: 24px;
}
/* Hide the price range shown above the description on variable products — price
   appears below the swatches after a variation is selected (.single_variation .price). */
.product-type-variable .rda-product-summary-inner > p.price,
.product-type-variable .summary > p.price,
.product.product-type-variable > p.price,
.rda-single-product.product-type-variable > p.price {
    display: none !important;
}

/* Short description */
.rda-single-product .woocommerce-product-details__short-description {
    font-family: 'EB Garamond', serif;
    font-size: 18px;
    line-height: 1.6;
    color: rgba(26, 43, 60, 0.8);
    margin-bottom: 32px;
}

/* Papier variation swatches — visual squares replacing pa_papier select */
.rda-papier-wrap {
    width: 100%;
}
.rda-papier-hidden-select {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    padding: 0 !important;
    margin: -1px !important;
    overflow: hidden !important;
    clip: rect(0, 0, 0, 0) !important;
    white-space: nowrap !important;
    border: 0 !important;
}
.rda-papier-swatches {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 6px;
    margin: 8px 0 0;
}
/* Sous 768 px les sept papiers ne tiennent plus sur une ligne : la grille laisse
   place à une bande qui défile horizontalement, tirable à la souris comme au
   doigt (voir « BANDE DES PAPIERS » dans js/custom.js). Les vignettes gardent une
   largeur fixe, la suivante reste amorcée à droite pour montrer qu'il y a une
   suite. */
@media (max-width: 768px) {
    /* Sans ces min-width, la bande impose sa largeur de contenu (7 × 88 px) comme
       largeur minimale a la colonne du resume, donc a la grille du produit : elle
       ne defilerait pas, elle deborderait. Un element de grille ou de flex a une
       largeur minimale « auto » par defaut, il faut la lever a chaque etage. */
    .rda-product-summary,
    .rda-product-summary-inner,
    .rda-papier-wrap { min-width: 0; }
    .rda-papier-swatches {
        display: flex;
        width: 100%;
        min-width: 0;
        grid-template-columns: none;
        overflow-x: auto;
        overscroll-behavior-x: contain;
        scroll-snap-type: x proximity;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: none;
        /* Le defilement horizontal decoupe aussi la verticale : « overflow-x: auto »
           force « overflow-y » a auto, et le relevement de 2 px au survol comme son
           ombre etaient rognes. On leur menage la place a l'interieur de la bande. */
        margin-top: 2px;
        padding: 6px 0 14px;
    }
    .rda-papier-swatches::-webkit-scrollbar { display: none; }
    /* Les vignettes se serrent pour tenir sur une ligne tant qu'elles le peuvent, et
       la bande ne se met a defiler que si elles descendraient sous 64 px de large.
       Avec quatre papiers elles tiennent ; avec sept, la bande defile a nouveau. */
    .rda-papier-swatches > .rda-papier-swatch {
        flex: 1 1 88px;
        min-width: 64px;
        max-width: 88px;
        scroll-snap-align: start;
    }
    /* Pendant le glissement, le curseur et la suspension du défilement natif. */
    .rda-papier-swatches.rda-glisse { cursor: grabbing; scroll-snap-type: none; }
    .rda-papier-swatches.rda-glisse > .rda-papier-swatch { pointer-events: none; }
}
.rda-papier-swatch {
    background: white;
    border: 1px solid rgba(26, 43, 60, 0.18);
    border-radius: 0;
    padding: 0;
    cursor: pointer;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    transition: border-color 0.25s ease, transform 0.25s ease, box-shadow 0.25s ease;
    text-align: center;
    font-family: inherit;
    min-width: 0;
}
.rda-papier-swatch:hover {
    border-color: var(--rda-navy);
    transform: translateY(-2px);
    box-shadow: 0 6px 14px rgba(26, 43, 60, 0.08);
}
.rda-papier-swatch:focus-visible {
    outline: 2px solid var(--rda-terracotta);
    outline-offset: 2px;
}
/* Cadre fin : un filet d'un pixel, comme au repos. La bordure etait a 2 px et un anneau
   d'un pixel de la meme couleur s'y ajoutait, ce qui donnait un cadre de trois pixels.
   La couleur suffit a signaler la selection. */
.rda-papier-swatch.rda-papier-active {
    border-color: var(--rda-terracotta);
    border-width: 1px;
    box-shadow: 0 6px 14px rgba(195, 106, 77, 0.18);
}
.rda-papier-thumb {
    display: block;
    width: 100%;
    aspect-ratio: 1 / 1;
    background-color: rgba(26, 43, 60, 0.06);
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    position: relative;
    /* Filet blanc de 5 px autour de la photo. « background-origin » et
       « background-clip » sont indispensables : sans eux le fond ignore le padding
       et l'image reste collee aux bords. */
    padding: 5px;
    background-origin: content-box;
    background-clip: content-box;
    box-sizing: border-box;
}
/* Les papiers non retenus passent en noir et blanc : l'oeil va au papier choisi. Le
   survol rend la couleur entiere, ce qui reste le moyen de comparer la teinte des
   papiers (ivoire du Bamboo, blanc franc du Baryta) sans avoir a cliquer. */
.rda-papier-swatch:not(.rda-papier-active) .rda-papier-thumb {
    filter: grayscale(1);
    transition: filter 0.3s var(--rda-transition-lux);
}
.rda-papier-swatch:not(.rda-papier-active):hover .rda-papier-thumb {
    filter: saturate(1);
}
.rda-papier-info {
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: 8px 4px 10px;
    min-height: 0;
    align-items: center;
}
.rda-papier-name {
    font-family: 'Jost', sans-serif;
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    font-weight: 500;
    color: var(--rda-navy);
    line-height: 1.2;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 100%;
}
.rda-papier-price {
    font-family: 'Jost', sans-serif;
    font-size: 11px;
    font-weight: 500;
    color: var(--rda-terracotta);
    line-height: 1;
    letter-spacing: 0.01em;
    white-space: nowrap;
}
.rda-papier-swatch:not(.rda-papier-active) .rda-papier-price {
    color: rgba(195, 106, 77, 0.75);
}

/* Paper info icon — top-right of each swatch, opens modal */
.rda-papier-info-btn {
    position: absolute;
    top: 4px;
    right: 4px;
    z-index: 2;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 20px;
    height: 20px;
    /* Pastille bleu nuit pleine, icone creme : elle se detache des quatre photos de
       papier, toutes claires, la ou le blanc translucide precedent s'y perdait. Au
       survol, elle passe au terracotta. Sans filet, comme la pastille des options :
       le disque plein se suffit, et le filet clair sur fond bleu nuit ne se voyait
       qu'a la loupe. Il est retire des DEUX etats, donc aucun saut au survol. */
    background: var(--rda-navy);
    border: none;
    border-radius: 50%;
    cursor: pointer;
    color: var(--rda-creme);
    transition: background 0.2s ease, color 0.2s ease, transform 0.2s ease;
    opacity: 1;
}
.rda-papier-info-btn:hover,
.rda-papier-info-btn:focus-visible {
    background: var(--rda-terracotta);
    color: var(--rda-creme);
    transform: scale(1.08);
    opacity: 1;
}
/* ⚠️ L'icone « info » de feather est ecartee au profit d'un « i » typographique.
   Son trace dessinait un cercle autour du i, qui faisait un second rond a l'interieur
   de la pastille, et ses deux traits geometriques juraient avec la serif du site.
   Le glyphe est pose en CSS plutot qu'en modifiant le balisage : la pastille garde son
   libelle accessible (aria-label), et le retour en arriere tient en une regle. */
.rda-papier-info-btn svg {
    display: none;
}

/* ========================================
   PASTILLES D'INFORMATION — UN SEUL GLYPHE
   ========================================
   Les deux pastilles du produit (papiers, et option « Affiche sans texte ») partagent
   desormais le meme « i » en serif. Elles etaient dessinees differemment : un trace
   geometrique d'un cote, un caractere en Jost de l'autre.

   ⚠️ « flex: 0 0 auto » est indispensable : sans lui, une pastille placee dans une
   rangee flex se laisse comprimer quand la place manque, et le disque s'ovalise.
   ⚠️ Le glyphe est pose en ::before dans les DEUX cas, meme la ou un « i » figure deja
   dans le balisage : « font-size: 0 » sur le bouton neutralise ce texte, et les deux
   pastilles passent par exactement le meme reglage. */
.rda-papier-info-btn,
.rda-option-info {
    flex: 0 0 auto;
}

/* ⚠️ Deux mecanismes differents, et c'est VOULU : sur la pastille des options,
   « ::before » porte deja la fleche de l'infobulle. Y poser le glyphe la ferait
   disparaitre. Celle des papiers n'a pas d'infobulle et peut donc l'utiliser. */
.rda-papier-info-btn::before {
    content: 'i';
    font-family: 'EB Garamond', serif;
    font-size: 15px;
    /* 600 et non 400 : a cette taille, en creme sur bleu nuit, la hampe d'un i serif
       fin disparait. La graisse 600 est bien fournie en woff2, il n'y a donc pas de
       gras synthetique. */
    font-weight: 600;
    line-height: 1;
}
/* Centrage optique. Le centrage par flex aligne la BOITE de la ligne, pas l'encre :
   la hampe et le point d'un i occupent le haut de cette boite, si bien que le glyphe
   parait pousse vers le haut. Un rien de remplissage haut le redescend, sans toucher
   au disque puisque la boite est en border-box.
   ⚠️ L'habillage de .rda-option-info se fait dans SA definition, plus bas dans ce
   fichier : une regle posee ici perdrait la cascade a specificite egale. */
.rda-papier-info-btn {
    box-sizing: border-box;
    /* Le contenu se centre dans la boite de contenu : l'ecart entre les deux
       remplissages le decale de la moitie de leur difference. Ici 0 en haut et 2 en
       bas remontent le glyphe de 1 px par rapport au centre du disque. */
    padding-top: 0;
    padding-bottom: 2px;
}
.rda-papier-swatch { position: relative; }

/* Paper detail modal */
.rda-papier-modal {
    position: fixed;
    inset: 0;
    z-index: 250;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
    opacity: 0;
    transition: opacity 0.25s ease;
}
.rda-papier-modal[hidden] { display: none; }
.rda-papier-modal.rda-papier-modal-open { opacity: 1; }
.rda-papier-modal-overlay {
    position: absolute;
    inset: 0;
    background: rgba(26, 43, 60, 0.55);
    backdrop-filter: blur(2px);
    cursor: pointer;
}
.rda-papier-modal-content {
    position: relative;
    background: var(--rda-creme);
    max-width: 560px;
    width: 100%;
    max-height: calc(100vh - 48px);
    overflow-y: auto;
    box-shadow: 0 24px 60px rgba(26, 43, 60, 0.25);
    transform: translateY(12px) scale(0.98);
    transition: transform 0.3s cubic-bezier(0.25, 1, 0.5, 1);
}
.rda-papier-modal.rda-papier-modal-open .rda-papier-modal-content {
    transform: translateY(0) scale(1);
}
.rda-papier-modal-close {
    position: absolute;
    top: 12px;
    right: 12px;
    z-index: 3;
    width: 36px;
    height: 36px;
    background: rgba(255, 255, 255, 0.9);
    border: 0;
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    color: var(--rda-navy);
    transition: background 0.2s ease, transform 0.2s ease;
    padding: 0;
}
.rda-papier-modal-close:hover {
    background: var(--rda-navy);
    color: var(--rda-creme);
}
.rda-papier-modal-close svg { width: 16px; height: 16px; stroke: currentColor; }
.rda-papier-modal-image {
    width: 100%;
    aspect-ratio: 16 / 9;
    background-color: rgba(26, 43, 60, 0.06);
    background-size: cover;
    /* Les photos sont desormais recadrees en 16/9 (1200x675) : elles remplissent
       exactement la fenetre, rien n'est coupe ici. C'est la vignette carree de 77 px
       qui rogne, et seulement sur les cotes. */
    background-position: center;
}
.rda-papier-modal-body {
    padding: 28px 32px 32px;
}
.rda-papier-modal-tag {
    display: inline-block;
    font-family: 'Jost', sans-serif;
    font-size: 10px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.16em;
    color: var(--rda-terracotta);
    margin-bottom: 12px;
}
.rda-papier-modal-title {
    font-family: 'CarlaSans', sans-serif;
    font-size: 24px;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--rda-navy);
    margin: 0 0 14px;
    font-variant-ligatures: no-common-ligatures;
    line-height: 1.2;
}
.rda-papier-modal-specs {
    font-family: 'Jost', sans-serif;
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: rgba(26, 43, 60, 0.65);
    margin: 0 0 18px;
    padding-bottom: 14px;
    border-bottom: 1px solid rgba(26, 43, 60, 0.12);
}
.rda-papier-modal-desc {
    font-family: 'EB Garamond', serif;
    font-size: 17px;
    line-height: 1.55;
    color: var(--rda-navy);
    margin: 0;
    white-space: pre-line;
}
@media (max-width: 540px) {
    .rda-papier-modal { padding: 16px; }
    .rda-papier-modal-body { padding: 22px 22px 26px; }
    .rda-papier-modal-title { font-size: 20px; }
    .rda-papier-modal-desc { font-size: 16px; }
}

/* Variations table — stacked layout (label above input) */
.rda-single-product .variations {
    margin-bottom: 24px;
    border: 0;
    width: 100%;
}
/* Dédicace add-on (Niveau 2 personnalisation) — escape the qty/add-to-cart flex row */
.rda-single-product .variations_button,
.rda-single-product form.cart:not(.variations_form) {
    flex-wrap: wrap !important; /* allow dédicace to push qty/btn to next line */
}
.rda-dedicace-wrap {
    display: block;
    box-sizing: border-box;
    height: 100%;
    padding: 16px 18px;
    background: rgba(195, 106, 77, 0.06);
    border: 1px solid rgba(195, 106, 77, 0.22);
}
/* Les deux options facultatives partagent une rangee, et la meme boite. C'est le
   conteneur qui porte desormais la largeur pleine et le rang, plus les blocs eux-memes. */
.rda-options-produit {
    display: grid;
    /* Une seule colonne : les deux options s'empilent. Cote a cote, la seconde etait
       amputee par le champ de saisie qu'elle ouvre, plus haut que le bloc voisin. */
    grid-template-columns: 1fr;
    gap: 12px;
    align-items: start;
    width: 100% !important;
    flex: 0 0 100% !important;
    order: -1 !important;
    grid-column: 1 / -1;
    margin: 20px 0 24px;
}
@media (max-width: 640px) {
    .rda-options-produit { grid-template-columns: 1fr; }
}
.rda-sans-texte-wrap {
    display: block;
    box-sizing: border-box;
    height: 100%;
    padding: 16px 18px;
    background: rgba(195, 106, 77, 0.06);
    border: 1px solid rgba(195, 106, 77, 0.22);
    /* Repere pour la pastille d'information, posee dans l'angle du bloc. */
    position: relative;
}

/* Pastille d'information des options facultatives, et son infobulle.
   Meme role que celle des papiers, mais en <button> et non en <span> : elle doit
   pouvoir etre atteinte au clavier, c'est le seul acces a son texte. Au doigt, le
   tap donne le focus, ce qui affiche l'infobulle. */
.rda-option-info {
    position: absolute;
    top: 12px;
    right: 12px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 20px;
    height: 20px;
    /* Bleu nuit, comme la pastille des papiers. ⚠️ Pas d'ocre : ce jeton a existe un
       temps puis a ete retire de la charte, une regle qui l'appelle passe donc
       simplement transparente, sans erreur visible. */
    background: var(--rda-navy);
    color: var(--rda-creme);
    border: none;
    border-radius: 50%;
    /* Meme « i » serif que la pastille des papiers. Le glyphe reste ici du texte du
       balisage : ::before est deja pris par la fleche de l'infobulle, plus bas. */
    font-family: 'EB Garamond', serif;
    font-size: 15px;
    font-weight: 600;
    line-height: 1;
    box-sizing: border-box;
    /* Meme remontee de 1 px que la pastille des papiers, par le meme moyen. */
    padding-top: 0;
    padding-bottom: 2px;
    cursor: help;
    transition: background 0.2s ease, transform 0.2s ease;
}
.rda-option-info:hover,
.rda-option-info:focus-visible {
    background: var(--rda-terracotta);
    transform: scale(1.08);
}
/* Petite fleche sous l'infobulle, pointe vers la pastille. Un triangle CSS : seule la
   bordure haute est coloree, les deux cotes restent transparents. */
.rda-option-info::before {
    content: "";
    position: absolute;
    bottom: calc(100% + 2px);
    right: 4px;
    z-index: 6;
    width: 0;
    height: 0;
    border-style: solid;
    border-width: 6px 6px 0 6px;
    border-color: var(--rda-navy) transparent transparent transparent;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity 0.18s ease, visibility 0.18s ease;
}
.rda-option-info::after {
    content: attr(data-info);
    position: absolute;
    /* Au-dessus de la pastille : sous le bloc, l'infobulle recouvrait la seconde
       option et le prix. */
    bottom: calc(100% + 8px);
    right: 0;
    z-index: 5;
    width: 250px;
    padding: 10px 12px;
    background: var(--rda-navy);
    color: var(--rda-creme);
    font-family: 'Jost', sans-serif;
    font-size: 12px;
    font-weight: 400;
    line-height: 1.45;
    text-align: left;
    text-transform: none;
    letter-spacing: 0;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity 0.18s ease, visibility 0.18s ease;
}
.rda-option-info:hover::after,
.rda-option-info:focus-visible::after,
.rda-option-info:hover::before,
.rda-option-info:focus-visible::before {
    opacity: 1;
    visibility: visible;
}
@media (prefers-reduced-motion: reduce) {
    .rda-option-info,
    .rda-option-info::before,
    .rda-option-info::after { transition: none; }
    .rda-option-info:hover,
    .rda-option-info:focus-visible { transform: none; }
}
.rda-sans-texte-label {
    font-family: 'Jost', sans-serif;
    font-size: 14px;
    letter-spacing: 0.04em;
    color: var(--rda-navy);
}
.rda-sans-texte-label strong {
    color: var(--rda-terracotta);
    font-weight: 500;
}
/* « .rda-sans-texte-help » a disparu du HTML : son texte est passe en infobulle.
   La regle ne sert plus qu'au compteur de caracteres du champ. */
.rda-dedicace-wrap .rda-dedicace-help {
    /* Cale a gauche sur le champ, pas sur le libelle de la case a cocher : le retrait
       de 30 px alignait ce texte sur le libelle, en decalage de l'input qu'il commente
       et qui, lui, part du bord du bloc. */
    margin: 10px 0 0;
    font-family: 'EB Garamond', serif;
    font-size: 15px;
    line-height: 1.4;
    color: rgba(var(--rda-navy-rgb), 0.75);
}

.rda-dedicace-toggle,
.rda-sans-texte-toggle {
    display: flex;
    align-items: center;
    gap: 12px;
    cursor: pointer;
    margin: 0;
}
.rda-sans-texte-toggle input[type="checkbox"] {
    width: 18px;
    height: 18px;
    accent-color: var(--rda-terracotta);
    cursor: pointer;
    flex-shrink: 0;
    margin: 0;
}
.rda-dedicace-toggle input[type="checkbox"] {
    width: 18px;
    height: 18px;
    accent-color: var(--rda-terracotta);
    cursor: pointer;
    flex-shrink: 0;
    margin: 0;
}
.rda-dedicace-label {
    font-family: 'Jost', sans-serif;
    font-size: 14px;
    letter-spacing: 0.04em;
    color: var(--rda-navy);
}
.rda-dedicace-label strong {
    color: var(--rda-terracotta);
    font-weight: 500;
}
.rda-dedicace-input-wrap {
    margin-top: 14px;
}
.rda-dedicace-input-wrap[hidden] { display: none; }
.rda-dedicace-input-wrap input[type="text"] {
    width: 100%;
    box-sizing: border-box;
    border: 1px solid rgba(26, 43, 60, 0.22);
    background: white;
    padding: 12px 14px;
    /* Meme traitement que les titres d'affiche (cf. .rda-title-creme) : CarlaSans en
       capitales espacees, ligatures coupees. Le client voit ainsi son texte tel qu'il
       sera compose sur le tirage, au lieu de l'italique Garamond d'avant.
       ⚠️ « text-transform » ne touche que l'affichage : la valeur envoyee au panier
       garde la casse saisie. */
    font-family: 'CarlaSans', sans-serif;
    font-weight: 700;
    font-style: normal;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    font-variant-ligatures: no-common-ligatures;
    font-feature-settings: "liga" 0, "clig" 0;
    font-size: 18px;
    color: var(--rda-navy);
}
.rda-dedicace-input-wrap input[type="text"]:focus {
    border-color: var(--rda-terracotta);
    outline: none;
}
.rda-dedicace-help {
    font-family: 'Jost', sans-serif;
    font-size: 12px;
    color: rgba(26, 43, 60, 0.55);
    margin: 6px 0 0;
}
#rda-dedicace-counter { font-weight: 500; color: var(--rda-navy); }

/* Validation dédicace : input en erreur + message */
.rda-dedicace-input-wrap input[type="text"].rda-input-error {
    border-color: #b3261e !important;
    box-shadow: 0 0 0 2px rgba(179, 38, 30, 0.12);
}
.rda-dedicace-error {
    font-family: 'Jost', sans-serif;
    font-size: 12.5px;
    line-height: 1.4;
    color: #b3261e;
    margin: 8px 0 0;
    font-weight: 500;
}

.rda-single-product .variations,
.rda-single-product .variations tbody,
.rda-single-product .variations tr,
.rda-single-product .variations td {
    display: block;
    width: 100%;
}
.rda-single-product .variations tr {
    margin-bottom: 16px;
}
.rda-single-product .variations td.label {
    padding: 0 0 8px 0;
    border: 0;
    background: transparent;
}
.rda-single-product .variations td.label label {
    font-family: 'Jost', sans-serif;
    font-size: 14px;
    text-transform: uppercase;
    letter-spacing: 0.15em;
    color: var(--rda-navy);
    font-weight: 500;
    margin: 0;
    padding: 0;
}
.rda-single-product .variations td.value {
    padding: 0;
    border: 0;
    background: transparent;
}
.rda-single-product .variations td.value select {
    font-family: 'EB Garamond', serif;
    font-size: 16px;
    border: 1px solid rgba(26, 43, 60, 0.25);
    border-radius: 0;
    padding: 12px 40px 12px 16px;
    color: var(--rda-navy);
    width: 100%;
    appearance: none;
    background: white url("data:image/svg+xml,%3Csvg width='14' height='8' viewBox='0 0 14 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1L7 7L13 1' stroke='%231A2B3C' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 16px center;
    transition: border-color 0.3s ease;
    cursor: pointer;
}
.rda-single-product .variations td.value select:focus {
    border-color: var(--rda-terracotta);
    outline: none;
}
.rda-single-product .reset_variations {
    display: inline-block;
    font-family: 'Jost', sans-serif;
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: rgba(26, 43, 60, 0.5);
    margin-top: 8px;
    text-decoration: none;
}
.rda-single-product .reset_variations:hover {
    color: var(--rda-terracotta);
}
.rda-single-product .single_variation_wrap .price {
    margin: 8px 0 16px;
}

/* Form: keep as block so .variations table + .single_variation_wrap stack vertically.
   The qty+button row inside .variations_button is the only flex container. */
.rda-single-product form.cart,
.rda-single-product form.variations_form {
    display: block;
    width: 100%;
    margin: 24px 0 0;
}
.rda-single-product .single_variation_wrap {
    margin-top: 16px;
}
.rda-single-product .single_variation {
    display: block;
    margin-bottom: 8px;
}
.rda-single-product .variations_button,
.rda-single-product form.cart:not(.variations_form) > .rda-qty-group ~ * ,
.rda-single-product form.cart:not(.variations_form) {
    display: flex;
    flex-wrap: nowrap;
    align-items: stretch;
    gap: 12px;
    width: 100%;
}
@media (max-width: 640px) {
    .rda-single-product .variations_button,
    .rda-single-product form.cart:not(.variations_form) { flex-wrap: wrap; }
}

/* Quantity wrapper now contains [- input +] directly (rda-qty-btn injected via JS) */
.quantity.rda-qty-enhanced {
    display: inline-flex !important;
    align-items: stretch;
    border: 1px solid rgba(26, 43, 60, 0.25);
    background: white;
    height: 48px;
    flex-shrink: 0;
    margin: 0;
}
.rda-single-product form.cart .quantity,
.rda-single-product form.cart .quantity.rda-qty-enhanced {
    height: 56px;
}
.woocommerce-cart .quantity.rda-qty-enhanced { height: 44px; }
.rda-single-product form.cart .quantity .qty {
    font-family: 'Jost', sans-serif;
    font-size: 16px;
    border: 0;
    border-radius: 0;
    width: 56px;
    text-align: center;
    color: var(--rda-navy);
    background: transparent;
    -moz-appearance: textfield;
    appearance: textfield;
    padding: 0;
    height: 100%;
}
.rda-single-product form.cart .quantity .qty::-webkit-outer-spin-button,
.rda-single-product form.cart .quantity .qty::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
}
.rda-qty-btn {
    background: transparent;
    border: 0;
    width: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    color: var(--rda-navy);
    transition: background-color 0.2s ease, color 0.2s ease;
    padding: 0;
    height: 100%;
}
.rda-qty-btn:hover {
    background-color: var(--rda-navy);
    color: var(--rda-creme);
}
.rda-qty-btn:hover svg { stroke: var(--rda-creme); }
.rda-qty-btn svg { width: 16px; height: 16px; }

.rda-single-product .single_add_to_cart_button {
    font-family: 'Jost', sans-serif !important;
    text-transform: uppercase;
    letter-spacing: 0.15em;
    font-size: 14px;
    background-color: var(--rda-terracotta) !important;
    color: var(--rda-creme) !important;
    border: none !important;
    border-radius: 0 !important;
    padding: 0 36px !important;
    height: 56px;
    flex: 1 1 auto;
    min-width: 0;
    cursor: pointer;
    transition: background-color 0.4s cubic-bezier(0.25, 1, 0.5, 1);
}
@media (max-width: 640px) {
    .rda-single-product .single_add_to_cart_button {
        flex: 1 1 100%;
        margin-top: 0;
    }
}
.rda-single-product .single_add_to_cart_button:hover {
    background-color: var(--rda-navy) !important;
}

/* Meta (SKU, categories, tags) — bullet list */
.rda-product-meta {
    list-style: disc inside;
    padding: 0;
    margin: 32px 0 0;
    font-family: 'EB Garamond', serif;
    font-size: 16px;
    color: rgba(26, 43, 60, 0.75);
    border-top: 1px solid rgba(26, 43, 60, 0.1);
    padding-top: 24px;
}
.rda-product-meta li {
    margin-bottom: 6px;
    padding-left: 4px;
}
.rda-product-meta li::marker {
    color: var(--rda-terracotta);
}
.rda-product-meta li strong {
    font-family: 'Jost', sans-serif;
    font-weight: 500;
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    color: var(--rda-navy);
    margin-right: 6px;
}
.rda-product-meta a {
    color: var(--rda-terracotta);
    text-decoration: none;
}
.rda-product-meta a:hover { text-decoration: underline; }

/* Accordion — replaces tabs below SKU */
.rda-accordion {
    margin-top: 32px;
    border-top: 1px solid rgba(26, 43, 60, 0.1);
}
.rda-accordion-item {
    border-bottom: 1px solid rgba(26, 43, 60, 0.1);
}
.rda-accordion-trigger {
    width: 100%;
    background: transparent;
    border: 0;
    padding: 18px 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    cursor: pointer;
    font-family: 'Jost', sans-serif;
    font-size: 14px;
    text-transform: uppercase;
    letter-spacing: 0.15em;
    font-weight: 500;
    color: var(--rda-navy);
    text-align: left;
    transition: color 0.3s ease;
}
.rda-accordion-trigger:hover { color: var(--rda-terracotta); }
.rda-accordion-trigger svg { width: 18px; height: 18px; stroke: currentColor; flex-shrink: 0; }
.rda-accordion-icon-minus { display: none; }
.rda-accordion-trigger[aria-expanded="true"] .rda-accordion-icon-plus { display: none; }
.rda-accordion-trigger[aria-expanded="true"] .rda-accordion-icon-minus { display: inline-block; }
.rda-accordion-panel {
    padding: 0 0 24px;
    font-family: 'EB Garamond', serif;
    font-size: 18px;
    line-height: 1.65;
    color: rgba(26, 43, 60, 0.85);
}
.rda-accordion-panel[hidden] { display: none; }
/* Hide WC default h2 title at top of each panel (Description / Informations / Avis) — accordion trigger already shows label.
   Reviews template nests h2 inside #comments, so catch it too. */
.rda-accordion-panel > h2:first-of-type,
.rda-accordion-panel .woocommerce-Reviews-title,
.rda-accordion-panel #reviews #comments > h2 {
    display: none !important;
}

/* Star rating — WC default uses WooCommerce icon font (we dequeued WC styles).
   Replace with Unicode stars + custom interaction states. */
.star-rating {
    overflow: hidden;
    position: relative;
    height: 1em;
    line-height: 1;
    font-size: 14px;
    width: 5.4em;
    font-family: serif;
    display: inline-block;
    color: var(--rda-terracotta);
}
.star-rating::before {
    content: '★★★★★';
    color: rgba(26, 43, 60, 0.2);
    float: left;
    top: 0;
    left: 0;
    position: absolute;
    letter-spacing: 0.05em;
}
.star-rating span {
    overflow: hidden;
    float: left;
    top: 0;
    left: 0;
    position: absolute;
    padding-top: 1.5em;
}
.star-rating span::before {
    content: '★★★★★';
    top: 0;
    position: absolute;
    left: 0;
    color: var(--rda-terracotta);
    letter-spacing: 0.05em;
}
/* Aggregate rating shown under product title */
.woocommerce-product-rating { margin: 0 0 16px; display: flex; align-items: center; gap: 12px; }
.woocommerce-product-rating .star-rating { font-size: 16px; }
.woocommerce-review-link {
    font-family: 'Jost', sans-serif;
    font-size: 12px;
    color: rgba(26, 43, 60, 0.6);
    text-decoration: none;
    letter-spacing: 0.04em;
}
.woocommerce-review-link:hover { color: var(--rda-terracotta); }

/* Comment rating selector (review form) */
.comment-form-rating { margin: 16px 0; }
.comment-form-rating label {
    display: block;
    font-family: 'Jost', sans-serif;
    font-size: 14px;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    color: var(--rda-navy);
    margin-bottom: 8px;
}
/* WooCommerce outputs stars in DOM order 1,2,3,4,5 (star-1 first, LTR).
   We use :has() to light up star-1..star-N when star-N is hovered:
   - a:hover matches the hovered star
   - a:has(~ a:hover) matches all stars BEFORE the hovered one (their next-sibling chain contains a:hover)
   :has() supported in Chrome 105+, Safari 15.4+, Firefox 121+. */
p.stars {
    display: inline-flex;
    gap: 4px;
    margin: 0;
    padding: 0;
    list-style: none;
}
p.stars a {
    position: relative;
    text-decoration: none;
    color: rgba(26, 43, 60, 0.25);
    font-size: 0;
    line-height: 1;
    width: 26px;
    height: 26px;
    display: inline-block;
    cursor: pointer;
    transition: color 0.2s ease;
}
p.stars a::before {
    content: '★';
    font-family: serif;
    font-size: 24px;
    line-height: 1;
    color: inherit;
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: color 0.2s ease;
}
/* Hover: light up star-N + all stars BEFORE it (using :has(~ a:hover)) */
p.stars a:hover::before,
p.stars a:has(~ a:hover)::before {
    color: var(--rda-terracotta);
}
/* Selected state (after click): WC adds `.selected` on <p> and `.active` on clicked <a> */
p.stars.selected a.active::before,
p.stars.selected a:has(~ a.active)::before {
    color: var(--rda-terracotta);
}

/* Review list + form polish */
.commentlist {
    list-style: none;
    padding: 0;
    margin: 0 0 24px;
}
.commentlist li {
    padding: 16px 0;
    border-bottom: 1px solid rgba(26, 43, 60, 0.1);
}
.commentlist .comment_container {
    display: flex;
    gap: 16px;
}
.commentlist .avatar {
    width: 48px;
    height: 48px;
    border-radius: 50%;
    flex-shrink: 0;
}
.comment-text .star-rating { margin-bottom: 8px; }
.woocommerce-review__author { font-family: 'CarlaSans', sans-serif; font-weight: 600; }
.woocommerce-review__published-date {
    font-family: 'Jost', sans-serif;
    font-size: 12px;
    color: rgba(26, 43, 60, 0.5);
    margin-left: 8px;
}
.comment-form .comment-form-comment,
.comment-form .comment-form-author,
.comment-form .comment-form-email { margin: 0 0 16px; }
.comment-form .comment-form-comment label,
.comment-form .comment-form-author label,
.comment-form .comment-form-email label {
    display: block;
    font-family: 'Jost', sans-serif;
    font-size: 14px;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    color: var(--rda-navy);
    margin-bottom: 6px;
}
.comment-form textarea,
.comment-form input[type="text"],
.comment-form input[type="email"] {
    width: 100% !important;
    box-sizing: border-box;
    border: 1px solid rgba(26, 43, 60, 0.22);
    border-radius: 0;
    padding: 12px 14px;
    font-family: 'EB Garamond', serif;
    font-size: 18px;
    background: white;
    color: var(--rda-navy);
}
.comment-form textarea { min-height: 140px; resize: vertical; }
.comment-form input[type="submit"] {
    background-color: var(--rda-terracotta) !important;
    color: var(--rda-creme) !important;
    border: 0 !important;
    border-radius: 0 !important;
    font-family: 'Jost', sans-serif !important;
    text-transform: uppercase;
    letter-spacing: 0.15em;
    padding: 14px 32px !important;
    cursor: pointer;
    transition: background-color 0.3s ease;
}
.comment-form input[type="submit"]:hover {
    background-color: var(--rda-navy) !important;
}

/* Page transition removed — pages render immediately. */
.rda-accordion-panel h2,
.rda-accordion-panel h3 {
    font-family: 'CarlaSans', sans-serif;
    font-size: 18px;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--rda-navy);
    margin: 0 0 12px;
}
.rda-accordion-panel p { margin-bottom: 12px; }
.rda-accordion-panel table {
    width: 100%;
    border-collapse: collapse;
    font-family: 'EB Garamond', serif;
    font-size: 16px;
}
.rda-accordion-panel table th,
.rda-accordion-panel table td {
    padding: 8px 12px;
    border-bottom: 1px solid rgba(26, 43, 60, 0.1);
    text-align: left;
}
.rda-accordion-panel table th {
    font-family: 'Jost', sans-serif;
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    font-weight: 500;
    color: var(--rda-navy);
    width: 35%;
}

/* Hide default tab nav (rendered nowhere now) */
.rda-single-product .woocommerce-tabs ul.tabs { display: none; }
.rda-single-product .woocommerce-tabs .panel { display: block !important; }

/* Related products — full-width grid below summary (no carousel) */
.rda-related-swiper-wrap,
/* Ni filet ni grand vide au-dessus des produits similaires : le titre de section
   suffit a marquer la rupture. */
.rda-related-wrap {
    margin-top: 50px;
    padding-top: 0;
    border-top: 0;
}
.rda-related-wrap .related.products ul.products,
.rda-related-wrap .upsells.products ul.products {
    display: grid !important;
    grid-template-columns: repeat(4, 1fr) !important;
    gap: 32px !important;
}
@media (max-width: 1024px) {
    .rda-related-wrap .related.products ul.products,
    .rda-related-wrap .upsells.products ul.products {
        grid-template-columns: repeat(2, 1fr) !important;
    }
}
.rda-single-product .related.products > h2,
.rda-single-product .upsells.products > h2 {
    font-family: 'CarlaSans', sans-serif;
    font-size: 24px;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--rda-navy);
    margin: 0 0 32px;
    text-align: center;
}

/* ========================================
   18. CART SLIDE-OUT — Panneau lateral
   ======================================== */

/* Override le mini cart du functions.php avec des styles plus poussés */
#rda-cart-sidebar {
    font-family: 'EB Garamond', serif;
}
#rda-cart-sidebar .woocommerce-mini-cart {
    list-style: none;
    padding: 0;
    margin: 0;
}

/* ─────────────────────────────────────────────────────────────────────
   Mini-cart item — layout compact CSS Grid
   DOM réel : <li> > [.remove ×] [<a>{img + title-span + attrs-span + dedi-span}] [.quantity] [.line-total]
   Trick : `display: contents` sur le <a> pour que ses enfants participent
   directement à la grille du <li>. Permet de placer img / title / attrs / dedi
   dans des grid-areas distinctes alors qu'ils sont nested dans le DOM.
   Structure visuelle :
     ┌──── img ────┬── title ───────── × ──┐
     │             ├── attrs ──────────────┤
     │  80×80      ├── dédicace (si exist) ┤
     │             ├── qté ────── total €  ┘
     └─────────────┴───────────────────────┘
   ───────────────────────────────────────────────────────────────────── */
#rda-cart-sidebar .woocommerce-mini-cart-item {
    display: grid !important;
    grid-template-columns: 80px 1fr auto;
    grid-template-areas:
        "img title remove"
        "img attrs attrs"
        "img qty   total";
    column-gap: 14px;
    row-gap: 0;
    align-items: start;
    padding: 18px 0;
    border-bottom: 1px solid rgba(26, 43, 60, 0.08);
    position: relative;
}
/* Si une dédicace est présente, insertion d'une ligne entre attrs et qty (modern :has) */
#rda-cart-sidebar .woocommerce-mini-cart-item:has(.rda-cart-item-dedicace) {
    grid-template-areas:
        "img title remove"
        "img attrs attrs"
        "img dedi  dedi"
        "img qty   total";
}
#rda-cart-sidebar .woocommerce-mini-cart-item:last-child {
    border-bottom: 0;
    padding-bottom: 6px;
}
/* Le <a> qui wrappe img + title + attrs + dedi s'efface visuellement
   pour que ses enfants soient placés directement dans la grille du <li>.
   Les enfants restent cliquables (les clics bubblent jusqu'à l'anchor). */
#rda-cart-sidebar .woocommerce-mini-cart-item > a:not(.remove) {
    display: contents;
    color: var(--rda-navy);
    text-decoration: none;
}
#rda-cart-sidebar .woocommerce-mini-cart-item > a:not(.remove) > img {
    grid-area: img;
    width: 80px;
    height: 80px;
    object-fit: contain;
    object-position: center;
    display: block;
    background: transparent;
    border: 0;
    padding: 0;
    box-sizing: border-box;
    align-self: start;
}
#rda-cart-sidebar .woocommerce-mini-cart-item > a:not(.remove) > .rda-cart-item-title {
    grid-area: title;
    margin: 0;
    align-self: start;
}
#rda-cart-sidebar .woocommerce-mini-cart-item > a:not(.remove) > .rda-cart-item-attrs {
    grid-area: attrs;
    margin: 0;
}
#rda-cart-sidebar .woocommerce-mini-cart-item > a:not(.remove) > .rda-cart-item-dedicace {
    grid-area: dedi;
    margin: 0;
    font-size: 14px;
    line-height: 1.3;
}
/* Bouton remove — pastille discrète top-right, plus de positionnement absolu */
#rda-cart-sidebar .woocommerce-mini-cart-item > .remove {
    grid-area: remove;
    position: static !important;
    top: auto !important;
    right: auto !important;
    width: 22px;
    height: 22px;
    text-align: center;
    line-height: 22px;
    font-size: 16px;
    font-weight: 400;
    color: rgba(26, 43, 60, 0.4) !important;
    background: transparent !important;
    border-radius: 50%;
    text-decoration: none !important;
    transition: color 0.2s ease, background-color 0.2s ease;
    align-self: start;
    justify-self: end;
}
#rda-cart-sidebar .woocommerce-mini-cart-item > .remove:hover {
    color: var(--rda-terracotta) !important;
    background: rgba(204, 102, 51, 0.08) !important;
}
/* Ligne qté × prix unitaire — gauche, plus discret que le total */
#rda-cart-sidebar .woocommerce-mini-cart-item > .quantity {
    grid-area: qty;
    margin: 6px 0 0;
    padding: 0;
    font-family: 'Jost', sans-serif !important;
    font-size: 14px;
    color: rgba(26, 43, 60, 0.65) !important;
    font-weight: 500;
    white-space: nowrap;
    align-self: end;
}
/* Total ligne — droite, plus gros, accent navy 600 */
#rda-cart-sidebar .woocommerce-mini-cart-item > .line-total {
    grid-area: total;
    margin: 6px 0 0;
    padding: 0;
    font-family: 'Jost', sans-serif !important;
    font-size: 16px;
    font-weight: 600;
    color: var(--rda-navy) !important;
    text-align: right;
    align-self: end;
    justify-self: end;
}
/* Tous les enfants amount/currency/bdi à l'intérieur héritent du parent (couleur + font) */
#rda-cart-sidebar .woocommerce-mini-cart-item > .quantity .woocommerce-Price-amount,
#rda-cart-sidebar .woocommerce-mini-cart-item > .quantity .amount,
#rda-cart-sidebar .woocommerce-mini-cart-item > .quantity bdi,
#rda-cart-sidebar .woocommerce-mini-cart-item > .quantity .woocommerce-Price-currencySymbol,
#rda-cart-sidebar .woocommerce-mini-cart-item > .line-total .woocommerce-Price-amount,
#rda-cart-sidebar .woocommerce-mini-cart-item > .line-total .amount,
#rda-cart-sidebar .woocommerce-mini-cart-item > .line-total bdi,
#rda-cart-sidebar .woocommerce-mini-cart-item > .line-total .woocommerce-Price-currencySymbol {
    font-family: 'Jost', sans-serif !important;
    color: inherit !important;
}

/* Title / attrs / dedicace — typo unifiée */
#rda-cart-sidebar .rda-cart-item-title {
    font-family: 'CarlaSans', sans-serif;
    font-weight: 600;
    font-size: 14px;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--rda-navy);
    display: block;
    line-height: 1.25;
    font-variant-ligatures: no-common-ligatures;
}
#rda-cart-sidebar .rda-cart-item-attrs {
    display: block;
    margin-top: 0;
    font-family: 'EB Garamond', serif;
    font-style: italic;
    font-size: 14px;
    color: rgba(26, 43, 60, 0.65);
    line-height: 1.3;
}
#rda-cart-sidebar .rda-cart-item-dedicace {
    display: block;
    margin-top: 0;
    font-family: 'EB Garamond', serif;
    font-style: italic;
    font-size: 14px;
    color: var(--rda-terracotta);
    line-height: 1.3;
}
#rda-cart-sidebar .variation,
#rda-cart-sidebar dl.variation {
    margin: 4px 0 6px;
    padding: 0;
    font-family: 'EB Garamond', serif;
    font-style: italic;
    font-size: 14px;
    color: rgba(26, 43, 60, 0.65);
    line-height: 1.35;
}
#rda-cart-sidebar .variation dt,
#rda-cart-sidebar .variation dd {
    display: inline;
    margin: 0;
    padding: 0;
    font-style: italic;
}
#rda-cart-sidebar .variation dt {
    font-weight: 500;
    color: rgba(26, 43, 60, 0.55);
}
#rda-cart-sidebar .variation dd { margin-right: 6px; }
#rda-cart-sidebar .variation dd p { display: inline; margin: 0; }

/* ========================================
   Universal cart item name display
   The PHP filter `rda_cart_item_name_clean` outputs:
     <a class="rda-cart-item-link"><span class="rda-cart-item-title">Title</span></a>
     <span class="rda-cart-item-attrs">Format · Papier</span>
   Without explicit display:block, the two spans collapse on the same line.
   Applied to ALL contexts (mini-cart slide-out, cart page, checkout order review).
   ======================================== */
.rda-cart-item-link,
.rda-cart-item-title {
    display: block;
}
.rda-cart-item-attrs {
    display: block;

    font-family: 'EB Garamond', serif;
    font-style: italic;
    font-size: 16px;
    line-height: 1.4;
    color: rgba(26, 43, 60, 0.65);
}
/* Mini-cart sidebar: dédicace line under attrs */
.rda-cart-item-dedicace {
    display: block;
    margin-top: 4px;
    font-family: 'EB Garamond', serif;
    font-style: italic;
    font-size: 15px;
    color: var(--rda-terracotta);
    line-height: 1.4;
}
#rda-cart-sidebar .rda-cart-item-dedicace {
    font-size: 14px;
}
/* Checkout order review: bigger attrs for legibility (per user request) */
.woocommerce-checkout #order_review table.shop_table .product-name .rda-cart-item-attrs,
.woocommerce-checkout #order_review table.shop_table .product-name .variation {
    display: block;
    font-family: 'EB Garamond', serif;
    font-style: italic;
    font-size: 16px;
    line-height: 1.4;
    color: rgba(26, 43, 60, 0.65);
}
.woocommerce-checkout #order_review table.shop_table .product-name {
    line-height: 1.4;
}
.woocommerce-checkout #order_review table.shop_table .product-name .rda-cart-item-title {
    font-family: 'CarlaSans', sans-serif;
    font-weight: 600;
    font-size: 16px;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--rda-navy);
}
.woocommerce-checkout #order_review table.shop_table .product-name a.rda-cart-item-link {
    text-decoration: none;
}
/* Force the "× N" qty to break onto its own line under the attrs */
.woocommerce-checkout #order_review table.shop_table .product-name .product-quantity {
    display: inline-block;
    margin-top: 6px;
    font-family: 'Jost', sans-serif;
    font-size: 14px;
    color: rgba(26, 43, 60, 0.7);
    font-weight: 500;
}

/* ========================================
   Menu contact button — explicit hover states for ALL 3 nav states
   1. Home non-scrolled : navbar.text-creme → hover = bg crème + text navy
   2. Home scrolled     : navbar.text-navy  → hover = bg navy + text crème
   3. Internal pages    : navbar.rda-nav-internal → hover = bg navy + text crème
   Tailwind CDN's JIT can miss dynamically-injected hover classes, so we lock
   the contract in CSS for all three states.
   ======================================== */
#navbar.text-creme #nav-btn-desktop:hover {
    background-color: var(--rda-creme) !important;
    color: var(--rda-navy) !important;
    border-color: var(--rda-creme) !important;
}
/* (the .rda-nav-internal + .text-navy rules are defined earlier in section 5) */

/* ========================================
   Checkout heading "Votre commande" — safety net
   Force visibility in case any plugin/filter hides #order_review_heading.
   ======================================== */
.woocommerce-checkout #order_review_heading {
    display: block !important;
    visibility: visible !important;
    opacity: 1 !important;
}
#rda-cart-sidebar .variation dd::after { content: ''; }
#rda-cart-sidebar .variation dt::after { content: ''; }
#rda-cart-sidebar .woocommerce-mini-cart-item .remove {
    position: absolute;
    right: 0;
    top: 50%;
    transform: translateY(-50%);
    color: rgba(26, 43, 60, 0.3) !important;
    font-size: 20px;
    transition: color 0.3s ease;
}
#rda-cart-sidebar .woocommerce-mini-cart-item .remove:hover {
    color: var(--rda-terracotta) !important;
}
#rda-cart-sidebar .mini_cart_item .quantity {
    font-family: 'Jost', sans-serif;
    font-size: 14px;
    color: var(--rda-terracotta);
    display: block;
    margin-top: 4px;
}
#rda-cart-sidebar .woocommerce-mini-cart__total {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    font-family: 'Jost', sans-serif;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    font-size: 14px;
    padding: 16px 0 14px;
    margin: 14px 0 0;
    border-top: 1px solid rgba(26, 43, 60, 0.15);
    color: var(--rda-navy);
}
#rda-cart-sidebar .woocommerce-mini-cart__total .amount {
    font-weight: 600;
    font-size: 18px;
    color: var(--rda-terracotta);
    letter-spacing: 0;
}
#rda-cart-sidebar .woocommerce-mini-cart__buttons {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding-top: 4px;
}

/* Free shipping nudge — universal (slide-out + cart page) */
.rda-shipping-nudge {
    margin: 16px 0;
    padding: 14px 16px;
    background: rgba(204, 102, 51, 0.06);

    border-radius: 0;
}
.rda-shipping-nudge p {
    margin: 0 0 10px;
    font-family: 'Jost', sans-serif;
    font-size: 14px;
    color: var(--rda-navy);
    line-height: 1.4;
}
.rda-shipping-nudge p strong {
    color: var(--rda-terracotta);
    font-weight: 600;
}
.rda-shipping-nudge.rda-shipping-nudge-ok {
    background: rgba(204, 102, 51, 0.06);
    border-left-color: var(--rda-terracotta);
}
.rda-shipping-nudge.rda-shipping-nudge-ok p {
    margin: 0;
    color: var(--rda-terracotta);
    font-weight: 500;
}
.rda-shipping-nudge.rda-shipping-nudge-ok p::before {
    content: '✓';
    margin-right: 6px;
    font-weight: 700;
}
/* Progress bar : universelle (visible cart slide-out + page cart) */
.rda-progress {
    height: 6px;
    background: rgba(26, 43, 60, 0.1);
    border-radius: 2px;
    overflow: hidden;
}
.rda-progress-bar {
    height: 100%;
    background: var(--rda-terracotta);
    transition: width 0.4s cubic-bezier(0.25, 1, 0.5, 1);
}
/* Override slide-out : nudge plus compact, barre plus fine */
#rda-cart-sidebar .rda-shipping-nudge {
    margin: 0 0 14px;
    padding: 12px 14px;
}
#rda-cart-sidebar .rda-shipping-nudge p {
    font-size: 14px;
    margin: 0 0 8px;
}
#rda-cart-sidebar .rda-progress { height: 4px; }

/* Aussi visible sur la page cart (cart_totals) — le hook before_buttons ne s'y déclenche pas
   automatiquement ; on peut le placer manuellement plus tard si voulu. */
#rda-cart-sidebar .woocommerce-mini-cart__buttons .button {
    display: block;
    text-align: center;
    font-family: 'Jost', sans-serif;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    font-size: 14px;
    padding: 14px 24px;
    border-radius: 0;
    transition: all 0.3s ease;
    text-decoration: none;
}
#rda-cart-sidebar .woocommerce-mini-cart__buttons .button:first-child {
    background-color: transparent;
    color: var(--rda-navy);
    border: 1px solid var(--rda-navy);
}
#rda-cart-sidebar .woocommerce-mini-cart__buttons .button:first-child:hover {
    background-color: var(--rda-navy);
    color: var(--rda-creme);
}
#rda-cart-sidebar .woocommerce-mini-cart__buttons .button.checkout {
    background-color: var(--rda-terracotta);
    color: var(--rda-creme);
    border: 1px solid var(--rda-terracotta);
}
#rda-cart-sidebar .woocommerce-mini-cart__buttons .button.checkout:hover {
    background-color: var(--rda-navy);
    border-color: var(--rda-navy);
}

/* Empty cart in sidebar */
#rda-cart-sidebar .woocommerce-mini-cart__empty-message {
    font-family: 'EB Garamond', serif;
    font-size: 18px;
    color: rgba(26, 43, 60, 0.6);
    text-align: center;
    padding: 40px 0;
    font-style: italic;
}

/* ========================================
   19. SHOP FILTERS — Bouton + Slide-out panel
   ======================================== */

/* Filter toggle button */
.rda-filter-toggle {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-family: 'Jost', sans-serif;
    font-size: 14px;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: var(--rda-navy);
    background: transparent;
    border: 1px solid rgba(26, 43, 60, 0.2);
    padding: 10px 20px;
    cursor: pointer;
    transition: all 0.3s ease;
    border-radius: 0;
}
.rda-filter-toggle:hover {
    border-color: var(--rda-navy);
    background-color: var(--rda-navy);
    color: var(--rda-creme);
}
.rda-filter-toggle svg {
    transition: stroke 0.3s ease;
}
.rda-filter-toggle:hover svg {
    stroke: var(--rda-creme);
}

/* Filter slide-out panel */
.rda-filter-panel {
    position: fixed;
    top: 0;
    right: 0;
    width: 100%;
    max-width: 380px;
    height: 100%;
    background: #FFFFFF;
    z-index: 200;
    transform: translateX(100%);
    transition: transform 0.5s cubic-bezier(0.25, 1, 0.5, 1);
    box-shadow: -10px 0 40px rgba(26, 43, 60, 0);
    overflow-y: auto;
}
.rda-filter-panel.rda-filter-open {
    transform: translateX(0);
    box-shadow: -10px 0 40px rgba(26, 43, 60, 0.1);
}

/* Panel header */
.rda-filter-panel-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 20px 24px;
    border-bottom: 1px solid rgba(26, 43, 60, 0.1);
}
.rda-filter-panel-title {
    font-family: 'Jost', sans-serif;
    font-size: 14px;
    text-transform: uppercase;
    letter-spacing: 0.15em;
    font-weight: 500;
    color: var(--rda-navy);
}
.rda-filter-panel-close {
    background: none;
    border: none;
    cursor: pointer;
    color: rgba(26, 43, 60, 0.4);
    padding: 4px;
    transition: color 0.3s ease;
}
.rda-filter-panel-close:hover {
    color: var(--rda-navy);
}

/* Panel body (widgets) */
.rda-filter-panel-body {
    padding: 24px;
}
.rda-filter-widget {
    margin-bottom: 32px;
}
.rda-filter-title {
    font-family: 'Jost', sans-serif;
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.15em;
    font-weight: 600;
    color: var(--rda-navy);
    margin-bottom: 16px;
    padding-bottom: 8px;
    border-bottom: 1px solid rgba(26, 43, 60, 0.1);
}
.rda-filter-widget ul {
    list-style: none;
    padding: 0;
    margin: 0;
}
.rda-filter-widget ul li {
    margin-bottom: 8px;
}
.rda-filter-widget ul li a {
    font-family: 'EB Garamond', serif;
    font-size: 18px;
    color: rgba(26, 43, 60, 0.7);
    text-decoration: none;
    transition: color 0.3s ease;
    display: flex;
    justify-content: space-between;
}
.rda-filter-widget ul li a:hover,
.rda-filter-widget ul li.current-cat a {
    color: var(--rda-terracotta);
}
.rda-filter-widget ul li .count {
    font-family: 'Jost', sans-serif;
    font-size: 12px;
    color: rgba(26, 43, 60, 0.4);
}

/* Price filter widget */
.rda-filter-widget .price_slider_wrapper {
    padding-top: 8px;
}
.rda-filter-widget .ui-slider .ui-slider-handle {
    background: var(--rda-terracotta);
    border: none;
    border-radius: 50%;
}
.rda-filter-widget .ui-slider .ui-slider-range {
    background: var(--rda-terracotta);
}
.rda-filter-widget .price_slider_amount .button {
    font-family: 'Jost', sans-serif;
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    background: var(--rda-terracotta);
    color: var(--rda-creme);
    border: none;
    border-radius: 0;
    padding: 8px 16px;
}

/* Filter overlay */
.rda-filter-overlay {
    position: fixed;
    inset: 0;
    background: rgba(26, 43, 60, 0.4);
    z-index: 199;
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.4s ease, visibility 0.4s ease;
}
.rda-filter-overlay.rda-filter-overlay-visible {
    opacity: 1;
    visibility: visible;
}

/* Filter button: visible on mobile only (desktop has permanent sidebar) */
.rda-filter-toggle { display: inline-flex; }
@media (min-width: 1024px) {
    .rda-filter-toggle { display: none !important; }
}

/* Shop layout — desktop sidebar + content */
.rda-shop-layout {
    display: block;
}
.rda-shop-sidebar {
    display: none;
}
@media (min-width: 1024px) {
    .rda-shop-layout {
        display: grid;
        grid-template-columns: 260px 1fr;
        gap: 56px;
        align-items: start;
    }
    .rda-shop-sidebar {
        display: block;
        position: sticky;
        top: 120px;
    }
    .rda-shop-sidebar .rda-filter-widget {
        margin-bottom: 32px;
    }
    .rda-shop-sidebar .rda-filter-title {
        font-family: 'Jost', sans-serif;
        font-size: 12px;
        text-transform: uppercase;
        letter-spacing: 0.15em;
        font-weight: 600;
        color: var(--rda-navy);
        margin: 0 0 16px;
        padding-bottom: 12px;
        border-bottom: 1px solid rgba(26, 43, 60, 0.15);
    }
    .rda-shop-sidebar ul {
        list-style: none;
        padding: 0;
        margin: 0;
    }
    .rda-shop-sidebar ul li {
        margin-bottom: 10px;
    }
    .rda-shop-sidebar ul li a {
        font-family: 'EB Garamond', serif;
        font-size: 18px;
        color: rgba(26, 43, 60, 0.7);
        text-decoration: none;
        display: flex;
        justify-content: space-between;
        align-items: baseline;
        gap: 8px;
        transition: color 0.3s ease;
    }
    .rda-shop-sidebar ul li a:hover,
    .rda-shop-sidebar ul li.current-cat a {
        color: var(--rda-terracotta);
    }
    .rda-shop-sidebar ul li .count {
        font-family: 'Jost', sans-serif;
        font-size: 12px;
        color: rgba(26, 43, 60, 0.4);
    }
}

/* Shop content — reset any leftover offset/margins */
.rda-shop-content {
    min-width: 0;
}
.rda-shop-content .woocommerce-notices-wrapper {
    margin-bottom: 16px;
}
/* Top bar: result count (left) + ordering (right) */
.rda-shop-content .woocommerce-result-count {
    float: left !important;
    margin: 0 !important;
}
.rda-shop-content .woocommerce-ordering {
    float: right !important;
    margin: 0 !important;
}
.rda-shop-content .rda-filter-toggle {
    float: left !important;
    margin-left: 16px !important;
}
/* En mobile, le bouton est seul sur sa ligne (compteur et tri masques) et la grille
   le suit immediatement. Elle porte pourtant « margin-top: 32px » : cette marge est
   mangee par le degagement du flottant, qui la remplace au lieu de s'y ajouter.
   L'espace doit donc venir du bouton lui-meme, dont la marge basse compte, elle, dans
   la hauteur du flottant. */
@media (max-width: 768px) {
    .rda-shop-content .rda-filter-toggle {
        /* Le retrait de 16 px sert a detacher le bouton du compteur de resultats, qui
           le precede sur la meme ligne. En mobile le compteur est masque : le bouton
           est seul et doit s'aligner sur le bord gauche des vignettes. */
        margin-left: 0 !important;
        margin-bottom: 24px !important;
    }
}
.rda-shop-content::after,
.rda-shop-content .woocommerce::after {
    content: '';
    display: block;
    clear: both;
}
.rda-shop-content ul.products {
    clear: both !important;
    margin-top: 32px !important;
}

/* Shop top bar — flex row above the grid */
.woocommerce .woocommerce-notices-wrapper { margin-bottom: 24px; }

/* Conteneur vide des notices : le retirer de la mise en page quand il ne contient rien.
   ⚠️ « .woocommerce » est une boite flex avec un gap de 40 px. Ce conteneur, meme large
   de zero pixel, y compte comme un element : il ne se voyait pas mais consommait son
   gap, ce qui decalait le panneau vers la droite (mesure sur la page de mot de passe
   oublie : 274 px a gauche contre 358 a droite). Des qu'une notice y est injectee,
   « :empty » cesse de correspondre et le conteneur reprend sa place. */
.woocommerce > .woocommerce-notices-wrapper:empty { display: none; }
.woocommerce .woocommerce-result-count {
    font-family: 'Jost', sans-serif;
    font-size: 13px;
    color: rgba(26, 43, 60, 0.55);
    margin: 0;
    flex: 1 1 auto;
    text-transform: uppercase;
    letter-spacing: 0.08em;
}
.woocommerce .woocommerce-ordering {
    margin: 0;
}
.woocommerce .woocommerce-ordering select {
    font-family: 'Jost', sans-serif;
    font-size: 13px;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    border: 1px solid rgba(26, 43, 60, 0.25);
    border-radius: 0;
    padding: 10px 36px 10px 16px;
    background: white url("data:image/svg+xml,%3Csvg width='14' height='8' viewBox='0 0 14 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1L7 7L13 1' stroke='%231A2B3C' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 12px center;
    appearance: none;
    cursor: pointer;
    color: var(--rda-navy);
}
.woocommerce-products-header,
.woocommerce .before-shop-loop-bar {
    margin-bottom: 32px;
}
/* Inject flex container around result count + filter + ordering */
.woocommerce .woocommerce-result-count,
.woocommerce .rda-filter-toggle,
.woocommerce .woocommerce-ordering {
    display: inline-flex;
    vertical-align: middle;
}
.woocommerce ul.products {
    clear: both;
}
.woocommerce nav.woocommerce-pagination {
    margin-top: 48px;
    text-align: center;
}
.woocommerce nav.woocommerce-pagination ul {
    display: inline-flex;
    gap: 8px;
    list-style: none;
    padding: 0;
    border: 0;
}
.woocommerce nav.woocommerce-pagination ul li {
    border: 0;
    margin: 0;
}
.woocommerce nav.woocommerce-pagination ul li a,
.woocommerce nav.woocommerce-pagination ul li span {
    font-family: 'Jost', sans-serif;
    font-size: 13px;
    padding: 8px 14px;
    border: 1px solid rgba(26, 43, 60, 0.2);
    color: var(--rda-navy);
    text-decoration: none;
    transition: all 0.3s ease;
}
.woocommerce nav.woocommerce-pagination ul li a:hover,
.woocommerce nav.woocommerce-pagination ul li span.current {
    background: var(--rda-navy);
    color: var(--rda-creme);
    border-color: var(--rda-navy);
}

/* Empty state */
.woocommerce-no-products-found {
    text-align: center;
    padding: 80px 20px;
    font-family: 'EB Garamond', serif;
    font-size: 18px;
    color: rgba(26, 43, 60, 0.6);
}

/* ========================================
   20. SWIPER — Related / Upsells carousel (mobile)
   ======================================== */

/* On mobile, related/upsells become horizontal swiper */
.rda-related-swiper,
.rda-upsells-swiper {
    overflow: hidden;
    padding-bottom: 40px;
}
.rda-related-swiper .swiper-slide,
.rda-upsells-swiper .swiper-slide {
    height: auto;
}
.rda-related-swiper .swiper-slide img,
.rda-upsells-swiper .swiper-slide img {
    width: 100%;
    height: auto;
}
.rda-related-swiper .swiper-pagination-bullet,
.rda-upsells-swiper .swiper-pagination-bullet {
    background: rgba(26, 43, 60, 0.3);
    opacity: 1;
    width: 8px;
    height: 8px;
    transition: all 0.3s ease;
}
.rda-related-swiper .swiper-pagination-bullet-active,
.rda-upsells-swiper .swiper-pagination-bullet-active {
    background: var(--rda-terracotta);
    width: 24px;
    border-radius: 4px;
}

/* Related/upsells Swiper — reset WC default ul.products grid inside Swiper */
.rda-related-swiper .swiper-wrapper,
.rda-upsells-swiper .swiper-wrapper {
    display: flex !important;
    grid-template-columns: none !important;
    gap: 0 !important;
    padding: 0;
    margin: 0;
    list-style: none;
}
.rda-related-swiper .swiper-slide,
.rda-upsells-swiper .swiper-slide {
    width: auto;
    margin: 0 !important;
    padding: 0;
    float: none !important;
    clear: none !important;
}
.rda-related-swiper .swiper-slide a img,
.rda-upsells-swiper .swiper-slide a img {
    width: 100%;
    height: auto;
}
.rda-related-swiper .swiper-slide .button,
.rda-upsells-swiper .swiper-slide .button {
    display: inline-block;
}

/* ========================================
   21. CART PAGE — Postero-inspired clean layout
   ======================================== */
.woocommerce-cart .woocommerce { display: block; }
.woocommerce-cart form.woocommerce-cart-form { margin: 0; }
.woocommerce-cart table.shop_table,
.woocommerce-cart table.cart {
    width: 100%;
    border-collapse: collapse;
    table-layout: fixed;
    margin: 0 0 32px;
    font-family: 'EB Garamond', serif;
    background: transparent;
    border: 0;
}
.woocommerce-cart table.cart colgroup col.col-remove,
.woocommerce-cart table.cart thead .product-remove,
.woocommerce-cart table.cart tbody .product-remove { width: 48px; }
.woocommerce-cart table.cart thead .product-thumbnail,
.woocommerce-cart table.cart tbody .product-thumbnail { width: 120px; }
/* Widths cart cols : centralisées en section 42 (60/25/15 %). Bloc legacy supprimé. */
.woocommerce-cart table.shop_table thead th,
.woocommerce-cart table.cart thead th {
    font-family: 'Jost', sans-serif;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    font-size: 12px;
    font-weight: 500;
    color: rgba(26, 43, 60, 0.6);
    padding: 16px 8px;
    border-bottom: 1px solid rgba(26, 43, 60, 0.18);
    text-align: left;
    background: transparent;
}
.woocommerce-cart table.shop_table thead th.product-price,
.woocommerce-cart table.shop_table thead th.product-quantity,
.woocommerce-cart table.shop_table thead th.product-subtotal { text-align: right; }
.woocommerce-cart table.cart tbody tr {
    border-bottom: 1px solid rgba(26, 43, 60, 0.08);
}
.woocommerce-cart table.cart td {
    padding: 24px 8px !important;
    vertical-align: middle !important;
    border: 0 !important;
    background: transparent;
    font-size: 16px;
    color: var(--rda-navy);
}
.woocommerce-cart table.cart td.product-remove { width: 40px; text-align: center; }
.woocommerce-cart table.cart td.product-remove .remove {
    color: rgba(26, 43, 60, 0.35) !important;
    font-size: 22px;
    font-weight: 300;
    text-decoration: none;
    transition: color 0.2s ease;
    background: transparent !important;
    width: auto !important;
    height: auto !important;
    line-height: 1 !important;
}
.woocommerce-cart table.cart td.product-remove .remove:hover { color: var(--rda-terracotta) !important; }
.woocommerce-cart table.cart td.product-thumbnail { width: 110px; padding-left: 0 !important; }
.woocommerce-cart table.cart td.product-thumbnail img,
.woocommerce-cart table.cart td.product-thumbnail a {
    width: 90px !important;
    height: auto !important;
    max-width: 90px !important;
    display: block;
}
.woocommerce-cart table.cart td.product-name { width: auto; padding-right: 16px !important; }
.woocommerce-cart table.cart td.product-name a {
    font-family: 'CarlaSans', sans-serif;
    font-weight: 600;
    font-size: 16px;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--rda-navy);
    text-decoration: none;
    line-height: 1.3;
    display: block;
    font-variant-ligatures: no-common-ligatures;
}
.woocommerce-cart table.cart td.product-name a:hover { color: var(--rda-terracotta); }
.woocommerce-cart table.cart td.product-name .rda-cart-item-attrs {
    display: block;
    margin-top: 6px;
    font-family: 'EB Garamond', serif;
    font-style: italic;
    font-size: 14px;
    color: rgba(26, 43, 60, 0.65);
    line-height: 1.4;
    text-transform: none;
    letter-spacing: 0;
}
.woocommerce-cart table.cart td.product-name .variation {
    margin: 6px 0 0;
    padding: 0;
    font-family: 'EB Garamond', serif;
    font-style: italic;
    font-size: 14px;
    color: rgba(26, 43, 60, 0.65);
    line-height: 1.35;
}
.woocommerce-cart table.cart td.product-name .variation dt,
.woocommerce-cart table.cart td.product-name .variation dd { display: inline; margin: 0; padding: 0; }
.woocommerce-cart table.cart td.product-name .variation dd p { display: inline; margin: 0; }
.woocommerce-cart table.cart td.product-name .variation dd { margin-right: 8px; }
/* product-price col supprimée (urami template = 3 cols name/quantity/subtotal sans price séparé) */
/* width product-quantity centralisée section 42 */
.woocommerce-cart table.cart td.product-quantity .quantity {
    display: inline-flex;
    align-items: center;
    border: 1px solid rgba(26, 43, 60, 0.25);
    background: white;
    height: 42px;
}
.woocommerce-cart table.cart td.product-quantity .qty {
    width: 50px;
    border: 0;
    text-align: center;
    background: transparent;
    font-family: 'Jost', sans-serif;
    height: 100%;
    appearance: textfield;
    -moz-appearance: textfield;
}
.woocommerce-cart table.cart td.product-quantity .qty::-webkit-outer-spin-button,
.woocommerce-cart table.cart td.product-quantity .qty::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.woocommerce-cart table.cart td.product-subtotal { font-family: 'Jost', sans-serif; font-weight: 500; color: var(--rda-navy); font-size: 16px; /* width + text-align centralisés section 42 */ }

/* Cart actions row (coupon + update cart) — version 25-mai (simple, sans overrides) */
.woocommerce-cart table.cart .actions {
    padding: 24px 0 !important;
    border-top: 1px solid rgba(26, 43, 60, 0.15);
}
.woocommerce-cart .coupon {
    float: none;
    display: flex;
    width: 100%;
    align-items: stretch;
    gap: 8px;
    margin-bottom: 12px;
}
.woocommerce-cart .coupon input[type="text"] {
    flex: 1;
    width: auto;
    border: 1px solid rgba(26, 43, 60, 0.25);
    background: white;
    border-radius: 0;
    padding: 10px 14px;
    font-family: 'EB Garamond', serif;
    font-size: 16px;
    height: 44px;
}
.woocommerce-cart .coupon button[name="apply_coupon"],
.woocommerce-cart button[name="update_cart"] {
    font-family: 'Jost', sans-serif !important;
    font-size: 14px !important;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    background-color: transparent !important;
    border: 1px solid var(--rda-navy) !important;
    color: var(--rda-navy) !important;
    border-radius: 0 !important;
    padding: 0 22px !important;
    height: 44px;
    cursor: pointer;
    transition: all 0.3s ease;
}
.woocommerce-cart .coupon button[name="apply_coupon"]:hover,
.woocommerce-cart button[name="update_cart"]:hover {
    background-color: var(--rda-navy) !important;
    color: var(--rda-creme) !important;
}

/* Cart totals card — full width on desktop (better breathing for shipping methods + totals) */
.woocommerce-cart .cart-collaterals {
    display: block;
    margin-top: 24px;
    width: 100%;
}
.woocommerce-cart .cart_totals {
    width: 100% !important;
    max-width: none !important;
    background: white;
    padding: 32px 40px;
    border: 1px solid rgba(26, 43, 60, 0.08);
    box-sizing: border-box;
}
@media (min-width: 768px) {
    .woocommerce-cart .cart_totals { padding: 36px 48px; }
}
.woocommerce-cart .cart_totals h2 {
    font-family: 'CarlaSans', sans-serif;
    font-size: 20px;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--rda-navy);
    margin: 0 0 18px;
    padding-bottom: 14px;
    border-bottom: 1px solid rgba(26, 43, 60, 0.12);
    font-variant-ligatures: no-common-ligatures;
}
.woocommerce-cart .cart_totals table {
    width: 100%;
    border-collapse: collapse;
    margin: 0 0 18px;
}
.woocommerce-cart .cart_totals table th,
.woocommerce-cart .cart_totals table td {
    padding: 10px 0 !important;
    border: 0 !important;
    background: transparent;
    text-align: left;
    font-family: 'EB Garamond', serif;
    font-size: 16px;
    color: var(--rda-navy);
}
.woocommerce-cart .cart_totals table th {
    font-family: 'Jost', sans-serif;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    font-size: 12px;
    font-weight: 500;
    color: rgba(26, 43, 60, 0.6);
    width: 50%;
}
.woocommerce-cart .cart_totals table td { text-align: right; }
.woocommerce-cart .cart_totals .order-total td,
.woocommerce-cart .cart_totals .order-total th {
    border-top: 1px solid rgba(26, 43, 60, 0.12) !important;
    padding-top: 14px !important;
    font-size: 18px;
    color: var(--rda-terracotta);
    font-weight: 500;
}
.woocommerce-cart .wc-proceed-to-checkout { margin-top: 18px; padding: 0; }
.woocommerce-cart .wc-proceed-to-checkout a.checkout-button {
    display: block;
    text-align: center;
    background-color: var(--rda-terracotta) !important;
    color: var(--rda-creme) !important;
    border: 0 !important;
    border-radius: 0 !important;
    font-family: 'Jost', sans-serif;
    text-transform: uppercase;
    letter-spacing: 0.15em;
    font-size: 14px;
    padding: 16px 24px;
    text-decoration: none;
    transition: background-color 0.3s ease;
}
.woocommerce-cart .wc-proceed-to-checkout a.checkout-button:hover { background-color: var(--rda-navy) !important; }

@media (max-width: 768px) {
    .woocommerce-cart table.cart thead { display: none; }
    .woocommerce-cart table.cart tbody tr {
        display: grid;
        grid-template-columns: 90px 1fr 32px;
        gap: 8px 16px;
        padding: 20px 0;
        align-items: center;
    }
    .woocommerce-cart table.cart td {
        padding: 0 !important;
        border: 0 !important;
    }
    .woocommerce-cart table.cart td.product-thumbnail { grid-row: span 3; }
    .woocommerce-cart table.cart td.product-remove { grid-column: 3; grid-row: 1; text-align: right !important; }
    .woocommerce-cart table.cart td.product-name { grid-column: 2; grid-row: 1; }
    .woocommerce-cart table.cart td.product-price { grid-column: 2 / 4; grid-row: 2; text-align: left !important; }
    .woocommerce-cart table.cart td.product-quantity { grid-column: 2 / 4; grid-row: 3; text-align: left !important; }
    .woocommerce-cart table.cart td.product-subtotal { display: none; }
    /* Mobile coupon override moved to dedicated breakpoint above */
    .woocommerce-cart .cart-collaterals { justify-content: stretch; }
    .woocommerce-cart .cart_totals { max-width: none; }
}

/* ========================================
   22. CHECKOUT PAGE — two-column on desktop
   ======================================== */
.woocommerce-checkout .woocommerce { display: block; }
.woocommerce-checkout .woocommerce-form-coupon-toggle { margin-bottom: 24px; }
.woocommerce-checkout .woocommerce-info {
    font-family: 'EB Garamond', serif;
    background: white;
    border: 1px solid rgba(26, 43, 60, 0.12);
    border-left: 3px solid var(--rda-terracotta);
    padding: 14px 18px;
    color: var(--rda-navy);
    font-size: 16px;
}
.woocommerce-checkout .woocommerce-info::before { color: var(--rda-terracotta); }
.woocommerce-checkout .woocommerce-info a { color: var(--rda-terracotta); }
/* ════════════════════════════════════════════════════════════════════
   CHECKOUT LAYOUT
   Mobile / tablet <1100px : stack vertical (billing + shipping puis order_review en dessous).
   Desktop ≥1100px : 2 colonnes (billing à gauche, order_review à droite ~480px).
   IMPORTANT : `min-width: 0` sur les grid items empêche le grid blowout
   (sans, un contenu trop long force la colonne à dépasser sa largeur définie).
   ════════════════════════════════════════════════════════════════════ */
.woocommerce-checkout form.checkout {
    display: block;
}
.woocommerce-checkout form.checkout #customer_details {
    margin-bottom: 32px;
    min-width: 0;
}
.woocommerce-checkout form.checkout #order_review_heading {
    margin: 32px 0 16px;
    padding: 0;
    background: transparent !important;
    border: 0 !important;
}
.woocommerce-checkout form.checkout #order_review {
    margin: 0;
    padding: 28px 32px;
    min-width: 0;
}
@media (min-width: 1100px) {
    .woocommerce-checkout form.checkout {
        display: grid;
        grid-template-columns: minmax(0, 1fr) 480px;
        grid-template-areas:
            "billing review-heading"
            "billing review";
        column-gap: 48px;
        row-gap: 0;
        align-items: start;
    }
    .woocommerce-checkout form.checkout #customer_details {
        grid-area: billing;
        margin-bottom: 0;
    }
    .woocommerce-checkout form.checkout #order_review_heading {
        grid-area: review-heading;
        margin: 0 0 16px;
    }
    .woocommerce-checkout form.checkout #order_review {
        grid-area: review;
    }
}

/* Long words (« Forêt d'Halatte, Refuge d'Araucanie ») wrap gracieusement
   au lieu de forcer la colonne à déborder. */
.woocommerce-checkout #order_review .product-name,
.woocommerce-checkout #order_review .product-name a,
.woocommerce-checkout #order_review .rda-cart-item-title,
.woocommerce-checkout #order_review .rda-cart-item-attrs,
.woocommerce-checkout #order_review .rda-cart-item-dedicace {
    overflow-wrap: break-word;
    word-wrap: break-word;
    word-break: normal;
    hyphens: auto;
    min-width: 0;
}
.woocommerce-checkout #order_review table.shop_table {
    table-layout: auto;
    width: 100%;
    max-width: 100%;
}
.woocommerce-checkout #order_review table.shop_table th.product-total,
.woocommerce-checkout #order_review table.shop_table td.product-total {
    width: 1%;
    white-space: nowrap;
    padding-left: 12px !important;
    vertical-align: top;
}
.woocommerce-checkout #order_review table.shop_table th.product-name,
.woocommerce-checkout #order_review table.shop_table td.product-name {
    width: auto;
    min-width: 0;
    vertical-align: top;
}
/* Shipping methods : labels longs wrappent dans la colonne td (au lieu de débordement table) */
.woocommerce-checkout #order_review #shipping_method,
.woocommerce-checkout #order_review tr.shipping td {
    min-width: 0;
}
.woocommerce-checkout #order_review #shipping_method li {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    text-align: left;
}
.woocommerce-checkout #order_review #shipping_method li label {
    flex: 1 1 auto;
    min-width: 0;
    word-break: normal;
    overflow-wrap: break-word;
    hyphens: auto;
    text-align: left;
}
/* tfoot th (Sous-total / Expédition / Total) ne doivent pas forcer une largeur min */
.woocommerce-checkout #order_review table.shop_table tfoot th,
.woocommerce-checkout #order_review table.shop_table tfoot td {
    word-break: normal;
    overflow-wrap: break-word;
    min-width: 0;
}
/* Force baseline alignment: the h3 inside #customer_details + #order_review_heading must
   share identical size/line-height/margin so both render on the same y-baseline. */
.woocommerce-checkout #customer_details .woocommerce-billing-fields > h3,
.woocommerce-checkout #customer_details .woocommerce-shipping-fields > h3,
.woocommerce-checkout #customer_details .col-1 > h3,
.woocommerce-checkout #customer_details .col-2 > h3,
.woocommerce-checkout #order_review_heading {
    font-family: 'CarlaSans', sans-serif !important;
    font-size: 20px !important;
    line-height: 1.2 !important;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--rda-navy);
    margin: 0 0 20px !important;
    padding-top: 0 !important;
    font-variant-ligatures: no-common-ligatures;
}
.woocommerce-checkout form.checkout .col2-set { display: block; width: 100%; float: none; }
.woocommerce-checkout form.checkout .col-1,
.woocommerce-checkout form.checkout .col-2 { width: 100% !important; float: none; margin-bottom: 24px; }
.woocommerce-checkout #customer_details { min-width: 0; }
.woocommerce-checkout h3 {
    font-family: 'CarlaSans', sans-serif;
    font-size: 20px;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--rda-navy);
    margin: 0 0 20px;
    font-variant-ligatures: no-common-ligatures;
}
.woocommerce-checkout .form-row {
    display: block;
    margin: 0 0 16px;
    padding: 0;
    width: 100%;
    float: none;
}
.woocommerce-checkout .form-row label {
    display: block;
    font-family: 'Jost', sans-serif;
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    color: var(--rda-navy);
    margin-bottom: 6px;
    font-weight: 500;
}
.woocommerce-checkout .form-row .required { color: var(--rda-terracotta); text-decoration: none; }
.woocommerce-checkout .form-row input.input-text,
.woocommerce-checkout .form-row textarea,
.woocommerce-checkout .form-row select,
.woocommerce-checkout .select2-container--default .select2-selection--single {
    font-family: 'EB Garamond', serif;
    font-size: 16px;
    border: 1px solid rgba(26, 43, 60, 0.22) !important;
    border-radius: 0 !important;
    background: white !important;
    color: var(--rda-navy) !important;
    padding: 12px 14px !important;
    width: 100% !important;
    height: auto !important;
    line-height: 1.4 !important;
    box-sizing: border-box;
}
.woocommerce-checkout .select2-container--default .select2-selection--single { height: 46px !important; padding: 0 14px !important; display: flex; align-items: center; }
.woocommerce-checkout .select2-container--default .select2-selection__rendered { padding: 0 !important; line-height: 1.4 !important; color: var(--rda-navy) !important; }
.woocommerce-checkout .form-row input.input-text:focus,
.woocommerce-checkout .form-row textarea:focus,
.woocommerce-checkout .form-row select:focus {
    border-color: var(--rda-terracotta) !important;
    outline: none;
    box-shadow: 0 0 0 2px rgba(195, 106, 77, 0.15);
}
/* Two-column grid for short fields on desktop */
@media (min-width: 768px) {
    .woocommerce-checkout #billing_first_name_field,
    .woocommerce-checkout #billing_last_name_field { display: inline-block; width: calc(50% - 8px); vertical-align: top; }
    .woocommerce-checkout #billing_first_name_field { margin-right: 12px; }
    .woocommerce-checkout #billing_postcode_field,
    .woocommerce-checkout #billing_city_field { display: inline-block; width: calc(50% - 8px); vertical-align: top; }
    .woocommerce-checkout #billing_postcode_field { margin-right: 12px; }
}

/* Order review : heading transparent + card white pour la table */
.woocommerce-checkout #order_review_heading {
    background: transparent !important;
    border: 0 !important;
    padding: 0 0 16px !important;
    margin: 0 !important;
}
.woocommerce-checkout #order_review {
    background: white;
    padding: 28px 32px;
    border: 1px solid rgba(26, 43, 60, 0.08);
}
/* Pin #order_review explicitly to "review" area — sinon auto-placement le pousse
   sur la première cellule vide (la rangée "notices" en haut quand y'a pas d'erreurs). */
/* Pin redondant supprimé — la règle grid plus haut gère le placement et le margin */
.woocommerce-checkout #order_review table.shop_table {
    width: 100%;
    border-collapse: collapse;
    margin: 0 0 18px;
    border: 0;
}
.woocommerce-checkout #order_review table.shop_table thead { border-bottom: 1px solid rgba(26, 43, 60, 0.18); }
.woocommerce-checkout #order_review table.shop_table th,
.woocommerce-checkout #order_review table.shop_table td {
    padding: 12px 0 !important;
    border: 0 !important;
    background: transparent;
    text-align: left;
    font-family: 'EB Garamond', serif;
    font-size: 16px;
    color: var(--rda-navy);
    vertical-align: top;
}
.woocommerce-checkout #order_review table.shop_table th {
    font-family: 'Jost', sans-serif;
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    font-weight: 500;
    color: rgba(26, 43, 60, 0.55);
}
.woocommerce-checkout #order_review table.shop_table td.product-total,
.woocommerce-checkout #order_review table.shop_table th.product-total { text-align: right; }
/* Totaux : montants à droite, labels à gauche (checkout) */
.woocommerce-checkout #order_review table.shop_table tfoot tr td {
    text-align: right !important;
}
.woocommerce-checkout #order_review table.shop_table tfoot tr th {
    text-align: left;
}
.woocommerce-checkout #order_review table.shop_table tfoot tr { border-top: 1px solid rgba(26, 43, 60, 0.1); }
.woocommerce-checkout #order_review table.shop_table tfoot th { color: var(--rda-navy); }
.woocommerce-checkout #order_review .order-total td,
.woocommerce-checkout #order_review .order-total th {
    border-top: 1px solid rgba(26, 43, 60, 0.18) !important;
    padding-top: 14px !important;
    font-size: 18px !important;
    color: var(--rda-terracotta) !important;
    font-weight: 500;
}
.woocommerce-checkout #payment {
    background: transparent;
    border-radius: 0;
    margin-top: 16px;
}
.woocommerce-checkout #payment ul.payment_methods {
    padding: 0 !important;
    list-style: none;
    border-bottom: 1px solid rgba(26, 43, 60, 0.1);
    margin: 0 0 16px;
}
.woocommerce-checkout #payment ul.payment_methods li {
    padding: 12px 0;
    border-top: 1px solid rgba(26, 43, 60, 0.1);
}
.woocommerce-checkout #payment ul.payment_methods li:first-child { border-top: 0; }
.woocommerce-checkout #payment div.payment_box {
    background: rgba(26, 43, 60, 0.04) !important;
    padding: 12px 14px !important;
    margin: 12px 0 0 !important;
    border-radius: 0 !important;
    font-family: 'EB Garamond', serif;
    font-size: 14px;
    color: rgba(26, 43, 60, 0.75);
}
.woocommerce-checkout #payment div.payment_box::before { display: none !important; }
.woocommerce-checkout #place_order {
    width: 100%;
    background-color: var(--rda-terracotta) !important;
    color: var(--rda-creme) !important;
    border: 0 !important;
    border-radius: 0 !important;
    font-family: 'Jost', sans-serif !important;
    text-transform: uppercase;
    letter-spacing: 0.15em;
    font-size: 14px;
    padding: 16px 24px !important;
    cursor: pointer;
    transition: background-color 0.3s ease;
}
.woocommerce-checkout #place_order:hover { background-color: var(--rda-navy) !important; }
.woocommerce-checkout .woocommerce-terms-and-conditions-wrapper {
    margin: 16px 0;
    font-family: 'EB Garamond', serif;
    font-size: 14px;
    color: rgba(26, 43, 60, 0.7);
}

/* ========================================
   23. MY ACCOUNT — sidebar nav + content
   ======================================== */   .woocommerce-MyAccount-navigation__list ul {   	border: none!important;   	}
.woocommerce-account .woocommerce {
    display: flex;
    gap: 40px;
    align-items: flex-start;
}
.woocommerce-account .woocommerce-MyAccount-navigation {
    width: 220px;
    flex-shrink: 0;
    float: none;
    margin: 0;
}
.woocommerce-account .woocommerce-MyAccount-navigation ul {
    list-style: none;
    margin: 0;
    padding: 0;
    border-top: 1px solid rgba(26, 43, 60, 0.12);
}
.woocommerce-account .woocommerce-MyAccount-navigation ul li {
    margin: 0;
    border-bottom: 1px solid rgba(26, 43, 60, 0.08);
}
.woocommerce-account .woocommerce-MyAccount-navigation ul li a {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 4px;
    font-family: 'Jost', sans-serif;
    font-size: 14px;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: rgba(26, 43, 60, 0.7);
    text-decoration: none;
    transition: color 0.2s ease;	}
.woocommerce-account .rda-account-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 18px;
    height: 18px;
    flex-shrink: 0;
    color: currentColor;
    opacity: 0.65;
    transition: opacity 0.2s ease;
}
.woocommerce-account .rda-account-icon svg {
    width: 18px;
    height: 18px;
    stroke: currentColor;
    stroke-width: 1.6;
}
.woocommerce-account .woocommerce-MyAccount-navigation ul li a:hover .rda-account-icon,
.woocommerce-account .woocommerce-MyAccount-navigation ul li.is-active .rda-account-icon {
    opacity: 1;
}
.woocommerce-account .rda-account-label {

}
.woocommerce-account .woocommerce-MyAccount-navigation ul li a:hover,
.woocommerce-account .woocommerce-MyAccount-navigation ul li.is-active a {
    color: var(--rda-terracotta);
}
.woocommerce-account .woocommerce-MyAccount-content {
    flex: 1;
    min-width: 0;
    margin-left: 0;
    font-family: 'EB Garamond', serif;
    font-size: 18px;
    color: var(--rda-navy);
    line-height: 1.6;
}
.woocommerce-account .woocommerce-MyAccount-content p,
.woocommerce-account .woocommerce-MyAccount-content table { font-family: 'EB Garamond', serif; }
.woocommerce-account .woocommerce-MyAccount-content h2,
.woocommerce-account .woocommerce-MyAccount-content h3 {
    font-family: 'CarlaSans', sans-serif;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--rda-navy);
    font-variant-ligatures: no-common-ligatures;
}
.woocommerce-account .woocommerce-MyAccount-content a { color: var(--rda-terracotta); text-decoration: none;   font-family: 'Jost', sans-serif !important;text-transform: uppercase; font-size: 14px;}
.woocommerce-account .woocommerce-MyAccount-content a:hover { text-decoration: underline; }
.woocommerce-account .woocommerce-MyAccount-content .button {
    background-color: var(--rda-terracotta) !important;
    color: var(--rda-creme) !important;
    border: 0 !important;
    border-radius: 0 !important;
    font-family: 'Jost', sans-serif !important;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    padding: 12px 24px !important;
    text-decoration: none;
    display: inline-block;	min-width: 115px;	text-align: center;}
.woocommerce-account .woocommerce-MyAccount-content .button:hover { background-color: var(--rda-navy) !important;text-decoration: none;}.woocommerce-MyAccount-content div.u-columns.woocommerce-Addresses.col2-set.addresses {	margin-top: 20px;}.woocommerce-Address address {	font-weight: normal;	font-style: normal;}
/* Login/register form */
.woocommerce-account .u-columns,
.woocommerce-account .col2-set { display: flex; gap: 32px; flex-wrap: wrap; }
.woocommerce-account .u-columns .col-1,
.woocommerce-account .col2-set .col-1,
.woocommerce-account .u-columns .col-2,
.woocommerce-account .col2-set .col-2 {
    flex: 1 1 320px;
    width: auto !important;
    margin: 0;
    background: white;
    padding: 32px;
  
}
.woocommerce-account form.login,
.woocommerce-account form.register { padding: 0; border: 0; }
.woocommerce-account form .form-row {
    margin-bottom: 16px;
}
.woocommerce-account form .form-row label {
    display: block;
    font-family: 'Jost', sans-serif;
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    color: var(--rda-navy);
    margin-bottom: 6px;
}
.woocommerce-account form .form-row input.input-text,
.woocommerce-account form .form-row input[type="email"],
.woocommerce-account form .form-row input[type="password"] {
    width: 100%;
    border: 1px solid rgba(26, 43, 60, 0.22);
    border-radius: 0;
    padding: 12px 14px;
    font-family: 'EB Garamond', serif;
    font-size: 18px;
    color: var(--rda-navy);
    background: white;
}

@media (max-width: 768px) {
    .woocommerce-account .woocommerce { flex-direction: column; gap: 24px; }
    .woocommerce-account .woocommerce-MyAccount-navigation { width: 100%; }
}

/* ========================================
   24. Bullets dans cartes Création (Édition partagée + Œuvre privée)
   Tailwind reset les <ul> à list-style:none ; on force des bullets terracotta
   visibles à l'intérieur des wysiwyg ACF des cards EP/OP.
   ======================================== */
#creation article ul {
    list-style: disc outside !important;
    padding-left: 22px !important;
    margin: 8px 0 16px !important;
}
#creation article ul li {
    margin-bottom: 6px;
    padding-left: 4px;
}
#creation article ul li::marker {
    color: var(--rda-terracotta);
}
/* OP card has hover:bg-terracotta → bullets must switch to creme to stay visible */
#creation article.border-terracotta:hover ul li::marker {
    color: var(--rda-creme) !important;
}

/* Hide the legal reCAPTCHA mention from the contact form — kept conformity-wise
   via the explicit mention in the Politique de confidentialité (sub-traitants list). */
.recaptcha-legal { display: none !important; }

/* ========================================
   24.b Shipping calculator (cart page form "Calculer les frais d'expédition")
   Labels en bloc au-dessus des inputs, bouton terracotta cohérent
   ======================================== */
.woocommerce-shipping-calculator {
    margin-top: 14px;
    padding: 18px 0 0;
    border-top: 1px dashed rgba(26, 43, 60, 0.12);
}
.woocommerce-shipping-calculator > .shipping-calculator-button {
    display: inline-block;
    font-family: 'Jost', sans-serif;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    font-size: 13px;
    color: var(--rda-terracotta);
    text-decoration: none !important;
    border-bottom: 0 !important;
    padding-bottom: 0;
    transition: color 0.25s ease;
}
.woocommerce-shipping-calculator > .shipping-calculator-button:hover {
    color: var(--rda-navy);
    text-decoration: none !important;
    border-bottom: 0 !important;
}
.woocommerce-shipping-calculator .shipping-calculator-form { margin-top: 14px; }
.woocommerce-shipping-calculator .form-row {
    display: block !important;
    width: 100% !important;
    margin: 0 0 14px !important;
    padding: 0 !important;
    text-align: left !important;
    float: none !important;
}
.woocommerce-shipping-calculator .form-row label {
    display: block !important;
    font-family: 'Jost', sans-serif;
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    font-weight: 500;
    color: var(--rda-navy);
    margin-bottom: 6px;
    text-align: left;
}
.woocommerce-shipping-calculator .form-row .woocommerce-input-wrapper { display: block; width: 100%; }
.woocommerce-shipping-calculator .form-row input.input-text,
.woocommerce-shipping-calculator .form-row select,
.woocommerce-shipping-calculator .select2-container--default .select2-selection--single {
    width: 100% !important;
    box-sizing: border-box !important;
    padding: 0 14px !important;
    border: 1px solid rgba(26, 43, 60, 0.22) !important;
    background: white !important;
    font-family: 'EB Garamond', serif !important;
    font-size: 16px !important;
    line-height: 48px !important;
    color: var(--rda-navy) !important;
    border-radius: 0 !important;
    height: 48px !important;
}
.woocommerce-shipping-calculator .select2-container--default .select2-selection--single {
    display: flex !important;
    align-items: center !important;
    padding: 0 14px !important;
}
.woocommerce-shipping-calculator .select2-container--default .select2-selection--single .select2-selection__rendered {
    padding: 0 !important;
    line-height: 48px !important;
    color: var(--rda-navy) !important;
}
.woocommerce-shipping-calculator .select2-container--default .select2-selection--single .select2-selection__arrow {
    height: 46px !important;
    top: 0 !important;
    right: 8px !important;
}
.woocommerce-shipping-calculator button[name="calc_shipping"],
.woocommerce-shipping-calculator button[type="submit"] {
    display: inline-block;
    background: var(--rda-terracotta) !important;
    color: var(--rda-creme) !important;
    border: 0 !important;
    border-radius: 0 !important;
    padding: 0 28px !important;
    height: 48px !important;
    line-height: 48px !important;
    font-family: 'Jost', sans-serif !important;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    font-size: 13px;
    font-weight: 500;
    cursor: pointer;
    transition: background-color 0.3s ease;
}
.woocommerce-shipping-calculator button[name="calc_shipping"]:hover,
.woocommerce-shipping-calculator button[type="submit"]:hover {
    background: var(--rda-navy) !important;
}

/* ========================================
   24.c Prix unifiés — Jost partout (couleur héritée du parent)
   Seuls les TOTAUX et SOUS-TOTAUX sont terracotta (voir 24.d).
   Les prix individuels héritent du texte parent (navy par défaut).
   ======================================== */
.woocommerce .amount,
.woocommerce .woocommerce-Price-amount,
.woocommerce-page .amount,
.woocommerce-page .woocommerce-Price-amount,
.rda-single-product .amount,
.rda-single-product .woocommerce-Price-amount,
#rda-cart-sidebar .amount,
#rda-cart-sidebar .woocommerce-Price-amount {
    font-family: 'Jost', sans-serif !important;
    font-weight: 500;
    font-variant-numeric: tabular-nums;
    color: inherit;
}
.woocommerce .woocommerce-Price-currencySymbol,
.woocommerce-page .woocommerce-Price-currencySymbol {
    color: inherit;
}

/* ========================================
   24.d Terracotta — UNIQUEMENT totaux et sous-totaux (cart, checkout, mini-cart)
   ======================================== */
.woocommerce-cart .cart_totals tr.cart-subtotal,
.woocommerce-cart .cart_totals tr.cart-subtotal td,
.woocommerce-cart .cart_totals tr.cart-subtotal th,
.woocommerce-cart .cart_totals tr.shipping td,
.woocommerce-cart .cart_totals tr.shipping th,
.woocommerce-cart .cart_totals tr.order-total td,
.woocommerce-cart .cart_totals tr.order-total th,
.woocommerce-cart .cart_totals tr.cart-subtotal .amount,
.woocommerce-cart .cart_totals tr.cart-subtotal .woocommerce-Price-amount,
.woocommerce-cart .cart_totals tr.shipping .amount,
.woocommerce-cart .cart_totals tr.shipping .woocommerce-Price-amount,
.woocommerce-cart .cart_totals tr.order-total .amount,
.woocommerce-cart .cart_totals tr.order-total .woocommerce-Price-amount,
.woocommerce-cart .cart_totals tr.order-total .woocommerce-Price-currencySymbol,
.woocommerce-checkout #order_review tfoot tr.cart-subtotal td,
.woocommerce-checkout #order_review tfoot tr.cart-subtotal th,
.woocommerce-checkout #order_review tfoot tr.shipping td,
.woocommerce-checkout #order_review tfoot tr.shipping th,
.woocommerce-checkout #order_review tfoot tr.order-total td,
.woocommerce-checkout #order_review tfoot tr.order-total th,
.woocommerce-checkout #order_review tfoot tr.cart-subtotal .amount,
.woocommerce-checkout #order_review tfoot tr.cart-subtotal .woocommerce-Price-amount,
.woocommerce-checkout #order_review tfoot tr.shipping .amount,
.woocommerce-checkout #order_review tfoot tr.shipping .woocommerce-Price-amount,
.woocommerce-checkout #order_review tfoot tr.order-total .amount,
.woocommerce-checkout #order_review tfoot tr.order-total .woocommerce-Price-amount,
.woocommerce-checkout #order_review tfoot tr.order-total .woocommerce-Price-currencySymbol,
.woocommerce-mini-cart__total,
.woocommerce-mini-cart__total .amount,
.woocommerce-mini-cart__total .woocommerce-Price-amount,
.woocommerce-mini-cart__total .woocommerce-Price-currencySymbol,
.widget_shopping_cart .total,
.widget_shopping_cart .total .amount,
.widget_shopping_cart .total .woocommerce-Price-amount {
    color: var(--rda-terracotta) !important;
}

/* "(dont 16,92 € TVA (20%))" — Jost lisible sous le total */
.cart_totals .order-total td .includes_tax,
.cart_totals .order-total td small.includes_tax,
#order_review .order-total td .includes_tax,
#order_review .order-total td small.includes_tax {
    font-family: 'Jost', sans-serif !important;
    font-style: normal !important;
    display: block;
    font-size: 12px;
    color: rgba(204, 102, 51, 0.75);
    font-weight: 400;
    margin-top: 4px;
    letter-spacing: 0.02em;
    text-transform: none;
}

/* Suffixe TTC — couleur héritée du contexte (terracotta dans les totaux, navy ailleurs) */
.rda-tax-suffix,
.woocommerce-price-suffix {
    display: inline-block;
    font-family: 'Jost', sans-serif !important;
    font-size: 11px !important;
    font-weight: 500 !important;
    letter-spacing: 0.06em !important;
    text-transform: uppercase;
    color: inherit !important;
    opacity: 0.85;
    margin-left: 2px;
    vertical-align: middle;
    position: relative;
    top: -1px;
}

/* line-height 1.3em sur les lignes Sous-total, Expédition, Cartes postales offertes, Total */
.woocommerce-cart .cart_totals tr.cart-subtotal td,
.woocommerce-cart .cart_totals tr.cart-subtotal th,
.woocommerce-cart .cart_totals tr.shipping td,
.woocommerce-cart .cart_totals tr.shipping th,
.woocommerce-cart .cart_totals tr.fee td,
.woocommerce-cart .cart_totals tr.fee th,
.woocommerce-cart .cart_totals tr.order-total td,
.woocommerce-cart .cart_totals tr.order-total th,
.woocommerce-checkout #order_review tfoot tr.cart-subtotal td,
.woocommerce-checkout #order_review tfoot tr.cart-subtotal th,
.woocommerce-checkout #order_review tfoot tr.shipping td,
.woocommerce-checkout #order_review tfoot tr.shipping th,
.woocommerce-checkout #order_review tfoot tr.fee td,
.woocommerce-checkout #order_review tfoot tr.fee th,
.woocommerce-checkout #order_review tfoot tr.order-total td,
.woocommerce-checkout #order_review tfoot tr.order-total th {
    line-height: 1.3em !important;
}

/* ========================================
   25. Shipping methods styling (cart + checkout)
   Radio + label propres, terracotta accent, prix bien lisible
   ======================================== */
.woocommerce-cart #shipping_method,
.woocommerce-checkout #shipping_method {
    list-style: none !important;
    margin: 0 !important;
    padding: 0 !important;
}
/* <li> en flex : radio fixé à gauche (flex-shrink: 0), label en flex:1 prend tout
   l'espace restant. Le label wrappe naturellement au mot mais ne tombe JAMAIS sous
   le radio (la colonne flex le tient à droite). */
.woocommerce-cart #shipping_method li,
.woocommerce-checkout #shipping_method li {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 10px 0;
    border-bottom: 1px dashed rgba(26, 43, 60, 0.08);
    text-align: left;
}
.woocommerce-cart #shipping_method li:last-child,
.woocommerce-checkout #shipping_method li:last-child {
    border-bottom: 0;
}
.woocommerce-cart #shipping_method input[type="radio"],
.woocommerce-checkout #shipping_method input[type="radio"] {
    accent-color: var(--rda-terracotta);
    width: 18px;
    height: 18px;
    margin: 4px 0 0 0; /* aligné sur la première ligne du label */
    flex: 0 0 18px;
    cursor: pointer;
}
.woocommerce-cart #shipping_method label,
.woocommerce-checkout #shipping_method label {
    display: block;
    flex: 1 1 auto;
    min-width: 0;
    font-family: 'EB Garamond', serif;
    font-size: 17px;
    line-height: 1.4;
    color: var(--rda-navy);
    cursor: pointer;
    margin: 0;
    text-transform: none;
    letter-spacing: 0;
    font-weight: 400;
    text-align: left;
    overflow-wrap: break-word;
    word-wrap: break-word;
}
.woocommerce-cart #shipping_method label bdi,
.woocommerce-checkout #shipping_method label bdi {
    font-family: 'Jost', sans-serif;
    font-weight: 500;
    color: var(--rda-terracotta);
    margin-left: 4px;
}
/* Forcer la même alignement pour les rows shipping affichés sous forme ligne unique
   (cas où WC affiche un seul mode sans radio : juste le label avec le prix) */
.woocommerce-cart .cart_totals tr.shipping td,
.woocommerce-checkout #order_review tr.shipping td {
    text-align: right;
}
/* Balance des colonnes review-order : product-name large (~75%), product-total compact.
   Évite que la colonne produit se fasse écraser par la colonne droite. */
.woocommerce-checkout #order_review table.shop_table thead th.product-name { width: 75%; }
.woocommerce-checkout #order_review table.shop_table thead th.product-total { width: 25%; white-space: nowrap; }
/* Row Expédition : span full largeur de la table (sinon coincée dans col 2 étroite).
   tr/th/td en display:block pour casser la mise en page table sur CETTE row uniquement.
   Les autres rows (cart_item, Sous-total, Total, Fee) restent en table normal. */
.woocommerce-checkout #order_review table.shop_table tfoot tr.woocommerce-shipping-totals.shipping,
.woocommerce-cart .cart_totals tr.woocommerce-shipping-totals.shipping {
    display: block;
    width: 100%;
    padding: 8px 0;
}
.woocommerce-checkout #order_review table.shop_table tfoot tr.woocommerce-shipping-totals.shipping th,
.woocommerce-cart .cart_totals tr.woocommerce-shipping-totals.shipping th {
    display: block;
    width: 100%;
    padding: 0 0 8px !important;
    text-align: left;
}
.woocommerce-checkout #order_review table.shop_table tfoot tr.woocommerce-shipping-totals.shipping td,
.woocommerce-cart .cart_totals tr.woocommerce-shipping-totals.shipping td {
    display: block;
    width: 100%;
    padding: 0 !important;
    text-align: left;
}
.woocommerce-checkout #order_review tr.woocommerce-shipping-totals.shipping td ul#shipping_method.woocommerce-shipping-methods,
.woocommerce-cart .cart_totals tr.woocommerce-shipping-totals.shipping td ul#shipping_method.woocommerce-shipping-methods {
    width: 100%;
    display: block;
    margin: 0;
    padding: 0;
    list-style: none;
}
.woocommerce-shipping-destination {
    font-family: 'EB Garamond', serif;
    font-style: italic;
    font-size: 15px;
    color: rgba(26, 43, 60, 0.6);
    margin-top: 8px;
}

/* ========================================
   26. Default 18px reading size on WC pages (desktop)
   Inputs + small labels keep their own sizes (already set elsewhere).
   ======================================== */
@media (min-width: 768px) {
    .woocommerce-cart .woocommerce-cart-form table,
    .woocommerce-cart .cart_totals,
    .woocommerce-checkout #order_review,
    .woocommerce-checkout #customer_details,
    .woocommerce-account .woocommerce-MyAccount-content {
        font-size: 18px;
    }
}

/* Legal modal (Mentions / Confidentialité / CGV) — text in standard reading size */
.rda-legal-modal { font-family: 'EB Garamond', serif; }
.rda-legal-modal h2 { font-family: 'CarlaSans', sans-serif; font-size: 28px; line-height: 1.2; margin: 0 0 18px; text-transform: uppercase; letter-spacing: 0.05em; color: var(--rda-navy); }
.rda-legal-modal h3 { font-family: 'Jost', sans-serif; font-size: 13px; text-transform: uppercase; letter-spacing: 0.15em; color: var(--rda-terracotta); margin: 24px 0 8px; }
.rda-legal-modal p,
.rda-legal-modal ul,
.rda-legal-modal li { font-family: 'EB Garamond', serif; font-size: 18px; line-height: 1.6; color: rgba(var(--rda-navy-rgb), 0.85); }
.rda-legal-modal p { margin: 0 0 16px; }
.rda-legal-modal ul { padding-left: 22px; margin: 0 0 18px; list-style: disc outside; }
.rda-legal-modal ul li { margin-bottom: 6px; }
.rda-legal-modal ul li::marker { color: var(--rda-terracotta); }
.rda-legal-modal a { color: var(--rda-terracotta); text-decoration: underline; text-underline-offset: 3px; }
.rda-legal-modal a:hover { color: var(--rda-navy); }
.rda-legal-modal strong { color: var(--rda-navy); font-weight: 500; }

/* Pages legales autonomes (CGV, mentions, confidentialite, retractation) :
   meme habillage que les modales, avec en plus les tableaux et les blocs cites. */
.rda-legal-page h2 { color: var(--rda-terracotta); margin-top: 44px; padding-top: 22px; border-top: 1px solid var(--rda-cream-border); }
.rda-legal-page h2:first-child { margin-top: 0; padding-top: 0; border-top: 0; }
.rda-legal-page table { width: 100%; border-collapse: collapse; margin: 0 0 24px; font-family: 'EB Garamond', serif; font-size: 17px; }
.rda-legal-page table td { border: 1px solid var(--rda-cream-border); padding: 10px 12px; vertical-align: top; line-height: 1.45; }
.rda-legal-page table tr:first-child td { background: var(--rda-creme); font-family: 'Jost', sans-serif; font-size: 12px; text-transform: uppercase; letter-spacing: 0.12em; color: var(--rda-terracotta); }
.rda-legal-page blockquote { margin: 0 0 22px; padding: 16px 20px; background: var(--rda-creme); border-left: 3px solid var(--rda-terracotta); }
.rda-legal-page blockquote p { margin: 0 0 8px; }
.rda-legal-page blockquote p:last-child { margin-bottom: 0; }
@media (max-width: 640px) { .rda-legal-page table { display: block; overflow-x: auto; } }

/* Meme contenu servi en lightbox (case RGPD du formulaire de contact).
   Le premier titre est celui de la page : il reste navy, comme un titre de modale,
   alors que les h2 suivants gardent leurs separateurs terracotta. */
.rda-legal-lightbox h2:first-child { color: var(--rda-navy); margin-bottom: 22px; }
.rda-legal-lightbox .rda-legal-loading {
    font-family: 'Jost', sans-serif;
    font-size: 13px;
    text-transform: uppercase;
    letter-spacing: 0.15em;
    color: rgba(var(--rda-navy-rgb), 0.45);
    padding: 24px 0 32px;
    margin: 0;
}
.rda-legal-lightbox { scrollbar-width: thin; scrollbar-color: rgba(var(--rda-navy-rgb), 0.25) transparent; }
.rda-legal-lightbox::-webkit-scrollbar { width: 6px; }
.rda-legal-lightbox::-webkit-scrollbar-thumb { background: rgba(var(--rda-navy-rgb), 0.25); border-radius: 3px; }
/* Le padding lateral vient des classes Tailwind du conteneur (px-8 / md:px-12 / lg:px-16). */
@media (max-width: 640px) {
    .rda-legal-lightbox h2:first-child { font-size: 24px; }
}

/* ========================================
   32bis. COMMANDES : confirmation, detail, historique
   Meme balisage WooCommerce pour les 3 pages :
   /commande/commande-recue/, /mon-compte/voir-la-commande/, /mon-compte/commandes/
   ======================================== */

/* WooCommerce balise le numero, la date et le statut en <mark> : jaune par defaut. */
.woocommerce mark,
.woocommerce-page mark { background: transparent; color: var(--rda-navy); font-weight: 500; }

/* --- Echelle typographique commune a ces pages ---
   Un seul jeu de tailles, pour eviter la cacophonie :
   etiquette 11px Jost / corps 18px Garamond / total 22px Garamond   */

/* --- Recapitulatif de la confirmation ---
   Bande unique en creme : les cellules ne "flottent" plus dans du blanc,
   et le nombre d'elements (5) ne laisse plus de case vide grise.   */
ul.woocommerce-order-overview {
    list-style: none; margin: 0 0 48px; padding: 0;
    display: flex; flex-wrap: wrap;
    background: var(--rda-creme); border: 1px solid var(--rda-cream-border);
}
ul.woocommerce-order-overview li {
    flex: 1 1 190px; min-width: 0;                 /* min-width:0 = autorise la troncature propre */
    margin: 0; padding: 20px 22px; border: 0;
    border-right: 1px solid var(--rda-cream-border);
    font-family: 'Jost', sans-serif; font-size: 10px; font-weight: 400;
    text-transform: uppercase; letter-spacing: 0.16em;
    color: var(--rda-terracotta); line-height: 1.5;
}
ul.woocommerce-order-overview li:last-child { border-right: 0; }
ul.woocommerce-order-overview li strong {
    display: block; margin-top: 10px;
    font-family: 'EB Garamond', serif; font-size: 18px; font-weight: 500;
    text-transform: none; letter-spacing: 0; color: var(--rda-navy);
    overflow-wrap: anywhere;                        /* e-mail long : plus de debordement */
}
ul.woocommerce-order-overview li .woocommerce-Price-amount { font-size: 18px; }
@media (max-width: 768px) {
    ul.woocommerce-order-overview li {
        flex: 1 1 100%; border-right: 0;
        border-bottom: 1px solid var(--rda-cream-border);
    }
    ul.woocommerce-order-overview li:last-child { border-bottom: 0; }
}

/* --- Titres de section --- */
.woocommerce-order-details__title,
.woocommerce-column__title,
.woocommerce-customer-details h2,
.woocommerce-MyAccount-content h2,
.woocommerce-order-downloads__title {
    font-family: 'CarlaSans', sans-serif; font-size: 22px; text-transform: uppercase;
    letter-spacing: 0.05em; color: var(--rda-navy);
    margin: 0px 0 12px; padding-bottom: 12px; border-bottom: 1px solid var(--rda-cream-border);
}

/* --- Tableaux (detail de commande + historique) --- */
table.woocommerce-table--order-details,
table.woocommerce-orders-table,
table.shop_table.order_details {
    width: 100%; border-collapse: collapse; margin: 0 0 32px;
    font-family: 'EB Garamond', serif; font-size: 18px; color: var(--rda-navy); 
}
.woocommerce-table--order-details th,
.woocommerce-orders-table th,
table.shop_table.order_details th {
    font-family: 'Jost', sans-serif; font-size: 12px; font-weight: 500; text-transform: uppercase;
    letter-spacing: 0.14em; color: var(--rda-terracotta); text-align: left;
    padding: 0 12px 10px; border-bottom: 1px solid var(--rda-cream-border);	padding-left: 0;
}.my_account_orders.account-orders-table thead tr th.woocommerce-orders-table__header.woocommerce-orders-table__header-order-number {	padding-left: 0;}.woocommerce-orders-table__row.woocommerce-orders-table__row--status-processing.order th.woocommerce-orders-table__cell.woocommerce-orders-table__cell-order-number {	padding: 0;	font-size: 18px;	font-weight: bold;}tr.woocommerce-orders-table__row.woocommerce-orders-table__row--status-processing.order td.woocommerce-orders-table__cell.woocommerce-orders-table__cell-order-date time {	font-size: 18px;}
/* Pas d'alignement global ici : il est defini colonne par colonne plus bas,
   sinon les deux regles se disputent la cascade. */
.woocommerce-table--order-details td,
.woocommerce-orders-table td,
table.shop_table.order_details td {
    padding: 16px 12px; border-bottom: 1px solid var(--rda-cream-border);
    vertical-align: top; line-height: 1.4;	padding-left: 0;
}
.woocommerce-table--order-details tfoot th { border-bottom: 0; padding-top: 14px; text-align: right; }
.woocommerce-table--order-details tfoot td { border-bottom: 0; padding-top: 14px; font-weight: 500; }
.woocommerce-table--order-details tfoot tr:last-child th,
.woocommerce-table--order-details tfoot tr:last-child td {
    border-top: 2px solid var(--rda-navy); font-size: 20px; color: var(--rda-navy); padding-top: 16px;
}
.woocommerce-table--order-details td.woocommerce-table__product-total,
.woocommerce-orders-table td.woocommerce-orders-table__cell-order-total,
.woocommerce-table--order-details tfoot td { text-align: right; white-space: nowrap; }

/* En-tete de la colonne des montants, cale a droite comme les montants eux-memes.
   Les « th » sont alignes a gauche par la regle generale : le libelle « Total »
   flottait donc au milieu du tableau, loin de la colonne qu'il annonce.
   ⚠️ L'en-tete ne porte PAS la meme classe que ses cellules : WooCommerce ecrit
   « woocommerce-table__product-table » sur le <th> et « ...__product-total » sur les
   <td>. On cible donc « product-total », commune aux deux, et la classe du <th>.
   ⚠️ La regle generale plus haut vise aussi « table.shop_table.order_details th »,
   qui compte deux classes et deux elements : elle l'emportait sur un selecteur a une
   seule classe de tableau. Il faut donc reprendre la meme racine pour passer devant. */
.woocommerce-table--order-details th.product-total,
.woocommerce-table--order-details th.woocommerce-table__product-table,
table.shop_table.order_details th.product-total,
table.shop_table.order_details th.woocommerce-table__product-table,
.woocommerce-orders-table th.woocommerce-orders-table__header-order-total {
    text-align: right;
}

/* --- Ligne produit : vignette portrait + variations resserrees ---
   Les affiches sont en portrait : un recadrage carre tombait sur une zone neutre
   de l'image et donnait des vignettes qui paraissaient vides. Ratio 3/4. */
.rda-order-item { display: flex; gap: 18px; align-items: flex-start; }
.rda-order-thumb {
    flex: 0 0 66px; width: 66px; overflow: hidden;
    background: var(--rda-creme);
}
.rda-order-thumb img,
.rda-order-thumb a { display: block; width: 100%; height: 100%; }
.rda-order-thumb img { object-fit: contain; object-position: center top; height: auto;}

.rda-order-name { min-width: 0; }
.rda-order-item .rda-order-name a { color: var(--rda-navy); text-decoration: none;text-transform: none;  font-family: 'EB Garamond', serif!important; font-size: 18px;}
.rda-order-item .rda-order-name a:hover { color: var(--rda-terracotta); }
.woocommerce-table--order-details .product-quantity {
    font-weight: 400; color: rgba(var(--rda-navy-rgb), 0.5); white-space: nowrap;
}
.woocommerce-table--order-details .wc-item-meta,
.woocommerce-table--order-details ul.wc-item-meta {
    list-style: none; margin: 8px 0 0; padding: 0;
    font-size: 15px; line-height: 1.45; color: rgba(var(--rda-navy-rgb), 0.6);
}
.woocommerce-table--order-details .wc-item-meta li { margin: 0; padding: 0; }
.woocommerce-table--order-details .wc-item-meta li p { display: inline; margin: 0; }
.woocommerce-table--order-details .wc-item-meta strong,
.woocommerce-table--order-details .wc-item-meta .wc-item-meta-label {
    font-weight: 400; color: rgba(var(--rda-navy-rgb), 0.45);
}

/* --- Repartition des colonnes : le produit respire, le prix se cale a droite ---
   62 % et non 72 % : les colonnes sont communes a thead/tbody/tfoot, et un premier
   tiers trop large etranglait les valeurs du pied (libelles de livraison longs). */
.woocommerce-table--order-details thead th:first-child,
.woocommerce-table--order-details tbody td:first-child { width: 62%; padding-left: 0;}
.woocommerce-table--order-details tfoot td { overflow-wrap: anywhere; }
/* Le bouton Facture ne doit pas se couper en deux lignes. */
.woocommerce-table--order-details tfoot td .button { white-space: nowrap; }
.woocommerce-table--order-details th:last-child,
.woocommerce-table--order-details td:last-child,
.woocommerce-table--order-details tfoot th { text-align: right; }

/* --- Historique des commandes ---
   Les lignes sont hautes a cause des boutons : sans alignement vertical,
   le texte des autres colonnes restait colle en haut. */
.woocommerce-orders-table th,
.woocommerce-orders-table td { vertical-align: middle; }

/* Colonnes chiffrees et actions calees a droite, en-tetes compris. */
.woocommerce-orders-table th.woocommerce-orders-table__header-order-total,
.woocommerce-orders-table td.woocommerce-orders-table__cell-order-total,
.woocommerce-orders-table th.woocommerce-orders-table__header-order-actions,
.woocommerce-orders-table td.woocommerce-orders-table__cell-order-actions,
.woocommerce-orders-table thead th:nth-child(4),
.woocommerce-orders-table tbody td:nth-child(4),
.woocommerce-orders-table thead th:last-child,
.woocommerce-orders-table tbody td:last-child { text-align: right; }

/* "296,00 EUR pour 4 articles" sur une ligne donnait l'impression d'un mauvais
   alignement : le montant passe en tete, le nombre d'articles en dessous. */
.woocommerce-orders-table td.woocommerce-orders-table__cell-order-total {
    font-size: 14px; color: rgba(var(--rda-navy-rgb), 0.5); line-height: 1.4;
}
.woocommerce-orders-table td.woocommerce-orders-table__cell-order-total .woocommerce-Price-amount {
    display: block; margin-bottom: 3px; white-space: nowrap;
    font-size: 19px; font-weight: 500; color: var(--rda-navy);
}

/* --- Actions de l'historique : des CTA qui ne se touchent plus ---
   La cellule reste une cellule de tableau (pas de display:flex), sinon elle
   sort de la mise en page et l'alignement vertical ci-dessus ne s'applique plus. */
.woocommerce-orders-table__cell-order-actions .button {
    display: inline-block; margin: 4px 0 4px 10px; vertical-align: middle;
}
.woocommerce-orders-table__cell-order-actions .button:first-child { margin-left: 0; }

/* --- Statut en pastille --- */
.woocommerce-orders-table__cell-order-status,
mark.order-status {
    font-family: 'Jost', sans-serif; font-size: 12px; text-transform: uppercase; letter-spacing: 0.1em; color: rgba(204, 102, 51);
}

/* --- Adresses --- */
.woocommerce-customer-details .woocommerce-columns--addresses { display: grid; grid-template-columns: 1fr 1fr; gap: 28px; }
.woocommerce-customer-details address {
    font-style: normal; font-family: 'EB Garamond', serif; font-size: 18px; line-height: 1.5;
   padding: 0px 0px;
    color: rgba(var(--rda-navy-rgb), 0.85);
}

/* --- Boutons (Voir, Payer, Commander a nouveau, Facture) --- */
.woocommerce-orders-table .button,
.woocommerce-order .button,
.woocommerce-MyAccount-content .button {
    display: inline-block; font-family: 'Jost', sans-serif; font-size: 14px; text-transform: uppercase;
    letter-spacing: 0.14em; background: var(--rda-navy); color: var(--rda-creme);
    padding: 10px 18px; border: 0; border-radius: 0; text-decoration: none; transition: background .3s ease;
}
.woocommerce-orders-table .button:hover,
.woocommerce-order .button:hover,
.woocommerce-MyAccount-content .button:hover { background: var(--rda-terracotta); color: var(--rda-creme); }

/* --- Message de confirmation --- */
.woocommerce-thankyou-order-received {
    font-family: 'EB Garamond', serif; font-size: 21px; line-height: 1.5;
    color: var(--rda-navy); background: var(--rda-creme);
    border-left: 3px solid var(--rda-terracotta); padding: 18px 22px; margin: 0 0 32px;
}

/* --- Historique vide --- */
.woocommerce-MyAccount-content .woocommerce-info,
.woocommerce-MyAccount-content .woocommerce-message {
    background: var(--rda-creme); border-left: 3px solid var(--rda-terracotta);
    font-family: 'EB Garamond', serif; font-size: 18px; color: var(--rda-navy); padding: 16px 20px;
}

/* ========================================
   Mobile (768px, point de rupture du theme)
   Motif responsive WooCommerce : l'en-tete disparait, chaque ligne devient
   une fiche, et le libelle de colonne est repris de l'attribut data-title.
   ======================================== */
@media (max-width: 768px) {

    /* --- Historique : une fiche par commande --- */
    table.woocommerce-orders-table thead { display: none; }
    table.woocommerce-orders-table,
    table.woocommerce-orders-table tbody { display: block; width: 100%; }
    table.woocommerce-orders-table tbody tr {
        display: block; margin: 0 0 16px; padding: 6px 18px 14px;
        background: var(--rda-creme); border: 1px solid var(--rda-cream-border);
    }	table.woocommerce-orders-table tbody tr  {		background: #fff!important;		border: none;	}	
    table.woocommerce-orders-table tbody td {
        display: flex; justify-content: space-between; align-items: baseline; gap: 16px;
        padding: 10px 0; border-bottom: 1px solid var(--rda-cream-border);
        text-align: right; font-size: 14px;
    }
    table.woocommerce-orders-table tbody td::before {
        content: attr(data-title);
        font-family: 'Jost', sans-serif; font-size: 10px; font-weight: 400;
        text-transform: uppercase; letter-spacing: 0.14em; color: var(--rda-terracotta);
        text-align: left; flex: 0 0 auto; white-space: nowrap;
    }
    table.woocommerce-orders-table tbody td:last-child { border-bottom: 0; padding-bottom: 4px; }
    table.woocommerce-orders-table tbody td.woocommerce-orders-table__cell-order-total {
        display: block; text-align: right;
    }
    table.woocommerce-orders-table tbody td.woocommerce-orders-table__cell-order-total::before {
        display: block; text-align: left; margin-bottom: 4px;
    }
    /* Boutons pleine largeur : cible tactile confortable (>= 44 px).
       Selecteur aussi specifique que la regle de base sur les td, sinon il perd. */
    table.woocommerce-orders-table tbody td.woocommerce-orders-table__cell-order-actions {
        display: block; text-align: right;
    }
    table.woocommerce-orders-table tbody td.woocommerce-orders-table__cell-order-actions::before {
        display: block; text-align: left; margin-bottom: 6px;
    }
    /* min-height 48px : cible tactile confortable (recommandation WCAG 2.5.8
       et guides iOS/Android, qui situent le minimum entre 44 et 48 px). */
   

    /* --- Detail de commande : une fiche par article ---
       A 375 px, deux colonnes ecrasaient le nom du produit sur cinq lignes.
       Le tfoot reste en tableau : ce sont des paires libelle / valeur. */
    /* La table sort entierement du modele tableau : sinon le pied (libelles de
       livraison longs) impose sa largeur et provoque un debordement horizontal. */
    table.woocommerce-table--order-details {
        display: block; width: 100%; font-size: 16px; 
    }
    .woocommerce-table--order-details thead { display: none; }
    .woocommerce-table--order-details tbody,
    .woocommerce-table--order-details tbody tr { display: block; width: 100%; }

    /* Pied : paires libelle / valeur en flex, valeur calee a droite. */
    .woocommerce-table--order-details tfoot { display: block; width: 100%; }
    .woocommerce-table--order-details tfoot tr {
        display: flex; justify-content: space-between; align-items: baseline;
        gap: 18px; padding: 8px 0;
    }
    .woocommerce-table--order-details tfoot th,
    .woocommerce-table--order-details tfoot td {
        display: block; width: auto; padding: 0; border: 0;
        white-space: normal; overflow-wrap: anywhere;
    }
    .woocommerce-table--order-details tfoot th { text-align: left; flex: 0 0 auto; }
    .woocommerce-table--order-details tfoot td { text-align: right; }
    .woocommerce-table--order-details tfoot tr:last-child {
        border-top: 2px solid var(--rda-navy); margin-top: 6px; padding-top: 14px; 
    }
    .woocommerce-table--order-details tfoot tr:last-child th,
    .woocommerce-table--order-details tfoot tr:last-child td { border-top: 0; }
    .woocommerce-table--order-details tbody tr {
        padding: 16px 0; border-bottom: 1px solid var(--rda-cream-border);
    }
    /* Meme specificite que la regle de largeur du bureau (td:first-child),
       placee plus loin dans la feuille : elle reprend la main en mobile. */
    .woocommerce-table--order-details tbody td,
    .woocommerce-table--order-details tbody td:first-child,
    .woocommerce-table--order-details tbody td:last-child {
        display: block; width: 100%; padding: 0; border-bottom: 0;
    }
    .woocommerce-table--order-details tbody td.woocommerce-table__product-total {
        margin-top: 10px; text-align: right; font-size: 18px; font-weight: 500;
    }
    .rda-order-item { gap: 14px; }
    .rda-order-thumb { flex-basis: 56px; width: 56px; }
    .woocommerce-table--order-details .wc-item-meta { font-size: 14px; }
    .woocommerce-table--order-details tfoot th,
    .woocommerce-table--order-details tfoot td { padding: 10px 0; font-size: 16px; border: none!important;	}
    .woocommerce-table--order-details tfoot tr:last-child th,
    .woocommerce-table--order-details tfoot tr:last-child td { font-size: 18px; }

    /* --- Adresses empilees --- */
    .woocommerce-customer-details .woocommerce-columns--addresses { grid-template-columns: 1fr; gap: 16px; }

    /* --- Titres de section un cran plus bas --- */
    .woocommerce-order-details__title,
    .woocommerce-column__title,
    .woocommerce-customer-details h2,
    .woocommerce-MyAccount-content h2 { font-size: 18px; margin: 0px 0 14px; }

    /* --- Message de confirmation --- */
    .woocommerce-thankyou-order-received { font-size: 18px; padding: 14px 16px; }

    /* --- Menu du compte : grille 2x2 de tuiles carrees ---
       Une liste verticale mangeait tout l'ecran avant d'atteindre le contenu.
       La deconnexion reste isolee, en pleine largeur, pour eviter l'appui accidentel. */
    .woocommerce-MyAccount-navigation__list ul {
        display: grid; grid-template-columns: 1fr 1fr; gap: 10px;
        list-style: none; margin: 0; padding: 0; border: 0;
    }
    .woocommerce-MyAccount-navigation__list li {
        margin: 0; padding: 0; border: 0; background: none;
    }
    /* Filets de la liste verticale : ils sont declares avec le prefixe
       .woocommerce-account, donc plus specifiques. On les neutralise ici,
       sinon ils reapparaissent au-dessus des tuiles. */
    .woocommerce-account .woocommerce-MyAccount-navigation ul { border-top: 0; }
    .woocommerce-account .woocommerce-MyAccount-navigation ul li { border-bottom: 0; border-top: 0; }
    /* Le separateur de la deconnexion est declare plus loin dans la feuille :
       il faut une specificite superieure pour le retirer. */
    .woocommerce-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout {
        margin-top: 0; padding-top: 0; border-top: 0;
    }
    /* Pas de carre force : la tuile s'adapte a son contenu, avec une hauteur
       minimale confortable au doigt. */
    .woocommerce-MyAccount-navigation__list li a {
        display: flex; flex-direction: column; align-items: center; justify-content: center;
        gap: 10px; min-height: 96px; padding: 18px 10px; height: auto;
        background: var(--rda-creme); border: 1px solid var(--rda-cream-border);
        text-align: center; box-sizing: border-box;
    }
    .woocommerce-MyAccount-navigation__list li.is-active a,
    .woocommerce-MyAccount-navigation__list li.woocommerce-MyAccount-navigation-link--active a {
        border-color: var(--rda-terracotta);
    }
    .woocommerce-MyAccount-navigation__list li a .rda-account-icon { margin: 0; }
    .woocommerce-MyAccount-navigation__list li a .rda-account-icon i,
    .woocommerce-MyAccount-navigation__list li a .rda-account-icon svg {
        width: 26px; height: 26px;
    }
    .woocommerce-MyAccount-navigation__list li a .rda-account-label {
        font-size: 11px; letter-spacing: 0.12em; line-height: 1.35;
    }
    /* Deconnexion : pleine largeur, icone et libelle sur la meme ligne */
    .woocommerce-MyAccount-navigation__list li.woocommerce-MyAccount-navigation-link--customer-logout {
        grid-column: 1 / -1;
    }
    .woocommerce-MyAccount-navigation__list li.woocommerce-MyAccount-navigation-link--customer-logout a {
        flex-direction: row; align-items: center; justify-content: center;
        gap: 12px; min-height: 56px; padding: 14px 16px;
    }
}

/* ========================================
   33. PROMO BADGE — Cartes Postales 5 pour 4 (single product)
   ======================================== */
.rda-promo-badge {
    display: none;
    background: rgba(204, 102, 51, 0.07);
    border-left: 3px solid var(--rda-terracotta);
    padding: 14px 18px;
    margin: 18px 0 22px;
    border-radius: 0;
    font-family: 'Jost', sans-serif;
    font-size: 15px;
    line-height: 1.45;
    color: var(--rda-navy);
}
.rda-promo-badge.is-active { display: block; }
.rda-promo-badge .rda-promo-icon {
    display: inline-block;
    width: 18px;
    height: 18px;
    vertical-align: -3px;
    margin-right: 8px;
    color: var(--rda-terracotta);
}
.rda-promo-badge strong {
    color: var(--rda-terracotta);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    font-size: 13px;
    display: block;
    margin-bottom: 4px;
}
.rda-promo-badge p { margin: 0; }

/* ========================================
   34. FEE LINE — Promo "Carte postale offerte" (cart & checkout)
   ======================================== */
.woocommerce-cart .cart_totals tr.fee th,
.woocommerce-cart .cart_totals tr.fee td,
.woocommerce-checkout #order_review tr.fee th,
.woocommerce-checkout #order_review tr.fee td,
#rda-cart-sidebar .fee {
    color: var(--rda-terracotta) !important;
    font-style: italic;
}
.woocommerce-cart .cart_totals tr.fee td .amount,
.woocommerce-checkout #order_review tr.fee td .amount,
#rda-cart-sidebar .fee .amount {
    font-family: 'Jost', sans-serif !important;
    color: var(--rda-terracotta) !important;
}

/* ========================================
   34.c Séparateurs subtils entre lignes totaux (cart + checkout)
   - Entre Sous-total et Expédition (border-top sur .shipping)
   - Au-dessus de la ligne promo "Carte postale offerte" (border-top sur .fee)
   Le séparateur épais au-dessus de .order-total est déjà géré ailleurs.
   ======================================== */
.woocommerce-cart .cart_totals tr.shipping th,
.woocommerce-cart .cart_totals tr.shipping td,
.woocommerce-checkout #order_review tfoot tr.shipping th,
.woocommerce-checkout #order_review tfoot tr.shipping td,
.woocommerce-cart .cart_totals tr.fee th,
.woocommerce-cart .cart_totals tr.fee td,
.woocommerce-checkout #order_review tfoot tr.fee th,
.woocommerce-checkout #order_review tfoot tr.fee td {
    border-top: 1px solid rgba(26, 43, 60, 0.1) !important;
    padding-top: 12px !important;
}

/* ========================================
   35.a CART PAGE — Override totals colors (Sous-total + Expédition en navy bold)
   Cancel le terracotta de 24.d sur cart-subtotal/shipping. .order-total reste terracotta.
   ======================================== */
.woocommerce-cart .cart_totals tr.cart-subtotal th,
.woocommerce-cart .cart_totals tr.cart-subtotal td,
.woocommerce-cart .cart_totals tr.cart-subtotal .amount,
.woocommerce-cart .cart_totals tr.cart-subtotal .woocommerce-Price-amount,
.woocommerce-cart .cart_totals tr.cart-subtotal .woocommerce-Price-currencySymbol,
.woocommerce-cart .cart_totals tr.cart-subtotal bdi,
.woocommerce-cart .cart_totals tr.shipping th,
.woocommerce-cart .cart_totals tr.shipping td,
.woocommerce-cart .cart_totals tr.shipping .amount,
.woocommerce-cart .cart_totals tr.shipping .woocommerce-Price-amount,
.woocommerce-cart .cart_totals tr.shipping .woocommerce-Price-currencySymbol,
.woocommerce-cart .cart_totals tr.shipping bdi {
    color: var(--rda-navy) !important;
}
/* Prix (montant) en bold pour subtotal + shipping (cart page) */
.woocommerce-cart .cart_totals tr.cart-subtotal td .amount,
.woocommerce-cart .cart_totals tr.cart-subtotal td .woocommerce-Price-amount,
.woocommerce-cart .cart_totals tr.shipping td .amount,
.woocommerce-cart .cart_totals tr.shipping td .woocommerce-Price-amount {
    font-weight: 700 !important;
}
/* TTC suffix dans subtotal/shipping cart page : navy 75% */
.woocommerce-cart .cart_totals tr.cart-subtotal small.woocommerce-price-suffix,
.woocommerce-cart .cart_totals tr.shipping small.woocommerce-price-suffix {
    color: var(--rda-navy) !important;
    opacity: 0.75;
}

/* ========================================
   35. CHECKOUT — Override totals colors (Sous-total + Expédition en navy bold)
   Cancel the terracotta from 24.d on cart-subtotal/shipping rows.
   .order-total reste terracotta (déjà géré ailleurs).
   ======================================== */
.woocommerce-checkout #order_review tfoot tr.cart-subtotal th,
.woocommerce-checkout #order_review tfoot tr.cart-subtotal td,
.woocommerce-checkout #order_review tfoot tr.cart-subtotal .amount,
.woocommerce-checkout #order_review tfoot tr.cart-subtotal .woocommerce-Price-amount,
.woocommerce-checkout #order_review tfoot tr.cart-subtotal .woocommerce-Price-currencySymbol,
.woocommerce-checkout #order_review tfoot tr.cart-subtotal bdi,
.woocommerce-checkout #order_review tfoot tr.shipping th,
.woocommerce-checkout #order_review tfoot tr.shipping td,
.woocommerce-checkout #order_review tfoot tr.shipping .amount,
.woocommerce-checkout #order_review tfoot tr.shipping .woocommerce-Price-amount,
.woocommerce-checkout #order_review tfoot tr.shipping .woocommerce-Price-currencySymbol,
.woocommerce-checkout #order_review tfoot tr.shipping bdi {
    color: var(--rda-navy) !important;
}
/* Prix (montant) en bold pour subtotal + shipping */
.woocommerce-checkout #order_review tfoot tr.cart-subtotal td .amount,
.woocommerce-checkout #order_review tfoot tr.cart-subtotal td .woocommerce-Price-amount,
.woocommerce-checkout #order_review tfoot tr.shipping td .amount,
.woocommerce-checkout #order_review tfoot tr.shipping td .woocommerce-Price-amount {
    font-weight: 700 !important;
}
/* TTC suffix dans subtotal/shipping suit la couleur du contexte (navy via inherit) */
.woocommerce-checkout #order_review tfoot tr.cart-subtotal small.woocommerce-price-suffix,
.woocommerce-checkout #order_review tfoot tr.shipping small.woocommerce-price-suffix {
    color: var(--rda-navy) !important;
    opacity: 0.75;
}
/* Order total : TTC suffix en terracotta (suit la couleur du total) */
.woocommerce-checkout #order_review tfoot tr.order-total small.woocommerce-price-suffix,
.woocommerce-cart .cart_totals tr.order-total small.woocommerce-price-suffix {
    color: var(--rda-terracotta) !important;
    opacity: 0.9;
    font-size: 14px !important;
    letter-spacing: 0.08em !important;
}

/* ========================================
   36. CHECKOUT — Coupon form (toggle link + input/bouton même ligne)
   Layout flex appliqué UNIQUEMENT quand WC JS révèle le form
   (attr-selector sur style="display: block"), sinon l'override casserait le display:none initial.
   ======================================== */
/* Form visible → flex row : input grow + bouton auto, gap 10px */
.woocommerce-checkout form.checkout_coupon[style*="display: block"],
.woocommerce-checkout form.checkout_coupon[style*="display:block"] {
    display: flex !important;
    flex-wrap: wrap;
    align-items: stretch;
    gap: 10px;
    margin: 0 0 24px;
}
.woocommerce-checkout form.checkout_coupon p.form-row-first {
    flex: 1 1 240px;
    margin: 0;
    padding: 0;
    width: auto;
    min-width: 0;
}
.woocommerce-checkout form.checkout_coupon p.form-row-last {
    flex: 0 0 auto;
    margin: 0;
    padding: 0;
    width: auto;
}form#woocommerce-checkout-form-coupon.checkout_coupon.woocommerce-form-coupon {	display: flex; }
.woocommerce-checkout form.checkout_coupon .clear { display: none; }
.woocommerce-checkout form.checkout_coupon input.input-text {
    width: calc(100% - 220px);
    height: 44px;
    box-sizing: border-box;
    padding: 0 14px;
    border: 1px solid rgba(26, 43, 60, 0.25);
    background: white;
    border-radius: 0;
    font-family: 'EB Garamond', serif;
    font-size: 16px;
    color: var(--rda-navy);
    margin: 0;
}
.woocommerce-checkout form.checkout_coupon button[name="apply_coupon"] {
    height: 48px;
    padding: 0 22px;
    background: var(--rda-terracotta) !important;
    color: var(--rda-creme) !important;
    border: 0 !important;
    border-radius: 0 !important;
    font-family: 'Jost', sans-serif !important;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    font-size: 14px;
    font-weight: 500;
    cursor: pointer;
    transition: background-color 0.3s ease;
    white-space: nowrap;
    margin: 0;
}
.woocommerce-checkout form.checkout_coupon button[name="apply_coupon"]:hover {
    background: var(--rda-navy) !important;
}
/* Mobile : input et bouton chacun full-width, gap 10px conservé */
@media (max-width: 600px) {
    .woocommerce-checkout form.checkout_coupon p.form-row-first,
    .woocommerce-checkout form.checkout_coupon p.form-row-last {
        flex: 1 1 100% !important;
        width: 100% !important;
    }
    .woocommerce-checkout form.checkout_coupon button[name="apply_coupon"] {
        width: 100% !important;
    }	form#woocommerce-checkout-form-coupon.checkout_coupon.woocommerce-form-coupon {	display: block;}
}

/* Toggle link "Vous avez un code promo ? Cliquez ici" — Jost uppercase + animation underline */
.woocommerce-checkout .woocommerce-form-coupon-toggle .woocommerce-info {
    margin-bottom: 16px;
}
.woocommerce-checkout .woocommerce-form-coupon-toggle .showcoupon,
.showcoupon {
    position: relative;
    display: inline-block;
    color: var(--rda-terracotta);
    font-family: 'Jost', sans-serif !important;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    font-size: 14px;
    font-weight: 500;
    text-decoration: none !important;
    border-bottom: 0 !important;
    padding-bottom: 1px;
    transition: color 0.3s ease;
}
.woocommerce-checkout .woocommerce-form-coupon-toggle .showcoupon::after,
.showcoupon::after {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    bottom: -1px;
    height: 1px;
    background: currentColor;
    transform: scaleX(1);
    transform-origin: right center;
    transition: transform 0.45s cubic-bezier(0.25, 1, 0.5, 1);
}
.woocommerce-checkout .woocommerce-form-coupon-toggle .showcoupon:hover,
.showcoupon:hover {
    color: var(--rda-navy);
}
.woocommerce-checkout .woocommerce-form-coupon-toggle .showcoupon:hover::after,
.showcoupon:hover::after {
    transform: scaleX(0); /* origin: right → disparaît par la gauche */
}

/* ========================================
   40. MY-ACCOUNT — Rules supplémentaires (H1 + lost-password + info)
   (Le bloc tabs CSS ~150 lignes a été supprimé — templates URL-based remplacent.
    Voir section 41 pour le styling des panes login/register.)
   ======================================== */
.woocommerce-account #main-content > h1 { text-align: center; }
.rda-account-info {
    font-family: 'EB Garamond', serif;
    font-size: 14px;
    color: rgba(26, 43, 60, 0.7);
    margin: 0 0 16px;
    padding: 12px 14px;
    background: rgba(204, 102, 51, 0.06);
    border-left: 3px solid var(--rda-terracotta);
}
.woocommerce-account .lost_password a {
    color: var(--rda-terracotta);
    text-decoration: none;
    border-bottom: 1px solid currentColor;
    padding-bottom: 1px;
}
.woocommerce-account .lost_password a:hover { color: var(--rda-navy); }

/* ========================================
   41. URAMI-ADAPTED TEMPLATES — Cart item, Review order, Login URL-based, Account profile
   Structure inspirée urami-wp : __thumbnail + __info wrappers.
   ======================================== */

/* ───────── Cart page : cart_item layout (float layout, compat table-layout) ───────── */
/* Widths cart cols : centralisées en section 42. Bloc legacy supprimé. */
/* IMPORTANT : pas de display:flex sur le td (casse table-layout). On utilise
   float dans le contenu pour positionner thumbnail + info côte à côte. */
.woocommerce-cart table.cart td.product-name {
    padding-right: 24px !important;
    overflow: hidden; /* clearfix pour les floats internes */
}
.woocommerce-cart .woocommerce-cart-form__cart-item__thumbnail {
    position: relative;
    float: left;
    width: 90px;
    margin-right: 20px;
}
.woocommerce-cart .woocommerce-cart-form__cart-item__thumbnail img {
    width: 90px !important;
    height: auto !important;
    max-width: 90px !important;
    display: block;
}
/* Bouton remove : rond, fond blanc, sans border, ombre légère, croix nette */
.woocommerce-cart .woocommerce-cart-form__cart-item__thumbnail .product-remove {
    position: absolute;
    top: -8px;
    right: -8px;
    z-index: 2;
    width: 26px!important;
    height: 26px!important;
    background: white !important;
    border: 0 !important;
    border-radius: 50% !important;
    box-shadow: 0 2px 6px rgba(26, 43, 60, 0.18);
    display: flex;
    align-items: center;
    justify-content: center;
    aspect-ratio: 1 / 1;
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.woocommerce-cart .woocommerce-cart-form__cart-item__thumbnail .product-remove .remove {
    color: var(--rda-navy) !important;
    font-size: 20px !important;
    line-height: 1 !important;
    font-weight: 300;
    text-decoration: none;
    background: transparent !important;
    width: auto !important;
    height: auto !important;
    padding: 0 !important;
    display: block;
}
.woocommerce-cart .woocommerce-cart-form__cart-item__thumbnail .product-remove:hover {
    box-shadow: 0 3px 10px rgba(26, 43, 60, 0.25);
    transform: scale(1.06);
}
.woocommerce-cart .woocommerce-cart-form__cart-item__thumbnail .product-remove:hover .remove {
    color: var(--rda-terracotta) !important;
}
.woocommerce-cart .woocommerce-cart-form__cart-item__info {
    /* overflow:hidden établit un BFC qui prend tout l'espace restant à côté du float */
    overflow: hidden;
    min-width: 0;
}
.woocommerce-cart .woocommerce-cart-form__cart-item__info .rda-cart-item-link,
.woocommerce-cart .woocommerce-cart-form__cart-item__info .rda-cart-item-title,
.woocommerce-cart .woocommerce-cart-form__cart-item__info > a {
    display: block;
    font-family: 'CarlaSans', sans-serif;
    font-weight: 600;
    font-size: 16px;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--rda-navy);
    text-decoration: none;
    line-height: 1.3;
    font-variant-ligatures: no-common-ligatures;
}
.woocommerce-cart .woocommerce-cart-form__cart-item__info > a:hover {
    color: var(--rda-terracotta);
}
.woocommerce-cart .woocommerce-cart-form__cart-item__quantity {
    margin-top: 10px;
    font-family: 'Jost', sans-serif;
    font-size: 14px;
    color: rgba(26, 43, 60, 0.65);
    letter-spacing: 0.04em;
}
/* L'ancienne col remove standalone n'a plus de sens (intégrée dans __thumbnail) */
.woocommerce-cart table.cart td.product-remove,
.woocommerce-cart table.cart thead th.product-remove { display: none; }

/* ───────── Mobile cart (≤768px) : grid 2-col propre + actions full-width ───────── */
@media (max-width: 768px) {
    .woocommerce-cart table.cart {
        table-layout: auto !important;
        width: 100% !important;
    }
    .woocommerce-cart table.cart thead { display: none !important; }
    .woocommerce-cart table.cart tbody tr {
        display: grid !important;
        grid-template-columns: 1fr auto;
        gap: 10px 16px;
        padding: 18px 0 !important;
        border-bottom: 1px solid rgba(26, 43, 60, 0.08) !important;
        align-items: center;
    }
    .woocommerce-cart table.cart tbody tr td {
        display: block !important;
        padding: 0 !important;
        border: 0 !important;
        width: auto !important;
    }
    /* product-name : ligne 1, full width (span 2 cols) */
    .woocommerce-cart table.cart td.product-name {
        grid-column: 1 / -1 !important;
        text-align: left !important;
        padding-right: 0 !important;
    }
    /* ligne 2 : qty stepper à gauche, total à droite */
    .woocommerce-cart table.cart td.product-quantity {
        grid-column: 1 !important;
        text-align: left !important;
        justify-self: start;
    }
    .woocommerce-cart table.cart td.product-subtotal {
        grid-column: 2 !important;
        display: block !important;
        text-align: right !important;
        font-family: 'Jost', sans-serif !important;
        font-weight: 600 !important;
        color: var(--rda-terracotta) !important;
        font-size: 16px !important;
        white-space: nowrap;
    }
    /* Actions row : sortir du grid, devenir block plein-largeur */
    .woocommerce-cart table.cart tbody tr:has(td.actions) {
        display: block !important;
        padding: 12px 0 !important;
        border-bottom: 0 !important;
    }
    .woocommerce-cart table.cart tbody tr td.actions {
        display: flex !important;
        flex-direction: column;
        gap: 12px;
        width: 100% !important;
        padding: 16px 0 !important;
        text-align: left !important;
    }
    .woocommerce-cart .coupon {
        display: flex !important;
        flex-direction: column;
        gap: 10px !important;
        margin: 0 !important;
        width: 100% !important;
    }
    .woocommerce-cart .coupon input[type="text"],
    .woocommerce-cart .coupon button[name="apply_coupon"],
    .woocommerce-cart button[name="update_cart"] {
        width: 100% !important;
        flex: 1 1 100% !important;
        min-width: 0 !important;
        height: 50px !important;
        font-size: 14px !important;
        white-space: normal;
        padding: 0 18px !important;
        box-sizing: border-box;
    }
    .woocommerce-cart .coupon input[type="text"] {
        font-size: 16px !important; /* évite le zoom auto iOS sur focus */
    }
}

/* ───────── Checkout : review-order cart_item layout ───────── */
.woocommerce-checkout #order_review table.shop_table td.product-name {
    display: flex;
    align-items: flex-start;
    gap: 14px;
    padding-right: 12px !important;
}
.woocommerce-checkout #order_review .woocommerce-cart-form__cart-item__thumbnail {
    flex: 0 0 64px;
    width: 64px;
}
.woocommerce-checkout #order_review .woocommerce-cart-form__cart-item__thumbnail img {
    width: 64px !important;
    height: auto !important;
    max-width: 64px !important;
    display: block;
}
.woocommerce-checkout #order_review .woocommerce-cart-form__cart-item__info {
    flex: 1 1 auto;
    min-width: 0;
}

.woocommerce-checkout #order_review .woocommerce-cart-form__cart-item__quantity {
    margin-top: 6px;
    font-family: 'Jost', sans-serif;
    font-size: 12px;
    color: rgba(26, 43, 60, 0.65);
    letter-spacing: 0.04em;
}

/* ───────── My Account : login/register URL-based page ───────── */
.rda-customer-login {	
    margin: 0 auto;
}
.rda-account-pane {
    background: white;
    padding: 32px 36px;
    border: 1px solid var(--rda-cream-border);
    max-width: 600px;
    width: 600px;
    /* ⚠️ Pas de « left: -5% » ici. Un decalage de cette sorte compensait a la main un
       defaut de centrage venu d'ailleurs : il deplacait le panneau de 62 px vers la
       gauche sur un conteneur de 1232 px, et se decalait a chaque largeur d'ecran,
       puisqu'un pourcentage suit la largeur du parent. Le centrage est assure par les
       marges automatiques seules. */
    margin: auto;
    position: relative;
}
.rda-account-pane .rda-account-heading {
    font-family: 'CarlaSans', sans-serif;
    font-size: 22px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--rda-navy);
    margin: 0 0 24px;
    padding-bottom: 14px;
    border-bottom: 1px solid var(--rda-cream-border);
    text-align: center;
    font-variant-ligatures: no-common-ligatures;
}
.rda-account-pane .form-row { margin: 0 0 16px; padding: 0; width: 100%; }
.rda-account-pane .form-row label {
    display: block;
    font-family: 'Jost', sans-serif;
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: var(--rda-navy);
    margin-bottom: 6px;
    font-weight: 500;
}
.rda-account-pane .form-row .required { color: var(--rda-terracotta); text-decoration: none; }
.rda-account-pane .form-row .input-text {
    width: 100%;
    height: 44px;
    box-sizing: border-box;
    padding: 0 14px;
    border: 1px solid rgba(26, 43, 60, 0.22);
    background: white;
    border-radius: 0;
    font-family: 'EB Garamond', serif;
    font-size: 16px;
    color: var(--rda-navy);
}
.rda-account-pane .form-row .input-text:focus {
    border-color: var(--rda-terracotta);
    outline: none;
    box-shadow: 0 0 0 2px rgba(195, 106, 77, 0.15);
}
.rda-account-pane .woocommerce-form-login__rememberme {
    display: flex;
    align-items: center;
    gap: 8px;
    font-family: 'EB Garamond', serif;
    font-size: 14px;
    color: var(--rda-navy);
    margin-bottom: 18px;
}
.rda-account-pane .woocommerce-form-login__rememberme input { accent-color: var(--rda-terracotta); margin: 0; }
.rda-account-pane button[type="submit"] {
    width: 100%;
    background: var(--rda-terracotta);
    color: var(--rda-creme);
    border: 0;
    border-radius: 0;
    font-family: 'Jost', sans-serif;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    font-size: 13px;
    font-weight: 500;
    padding: 14px 24px;
    cursor: pointer;
    transition: background-color 0.3s ease;
    margin-top: 8px;
}
.rda-account-pane button[type="submit"]:hover { background: var(--rda-navy); }
.rda-account-pane .rda-account-info {
    font-family: 'EB Garamond', serif;
    font-size: 14px;
    color: rgba(26, 43, 60, 0.7);
    font-style: italic;
    margin: 0 0 16px;
}
.rda-account-pane .rda-account-form-footer {
    margin-top: 24px;
    padding-top: 18px;
    border-top: 1px solid var(--rda-cream-border);
    text-align: center;
    font-family: 'Jost', sans-serif;
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.1em;
}
.rda-account-pane .rda-account-form-footer p { margin: 6px 0; }
.rda-account-pane .rda-account-form-footer a,
.rda-account-pane .woocommerce-LostPassword a,
.rda-account-pane .woocommerce-register__link a,
.rda-account-pane .woocommerce-login__link a {
    color: var(--rda-terracotta);
    text-decoration: none;
    transition: color 0.2s ease;
    border-bottom: 1px solid currentColor;
    padding-bottom: 1px;	font-family: 'Jost', sans-serif;
}
.rda-account-pane .rda-account-form-footer a:hover,
.rda-account-pane .woocommerce-LostPassword a:hover,
.rda-account-pane .woocommerce-register__link a:hover,
.rda-account-pane .woocommerce-login__link a:hover {
    color: var(--rda-navy);
}
.rda-account-pane .woocommerce-login__link span {
    color: rgba(26, 43, 60, 0.65);
    margin-right: 6px;
    font-weight: 400;
}

/* ───────── My Account : navigation profile header ───────── */
.rda-myaccount-profile {
    font-family: 'EB Garamond', serif;
    font-size: 16px;
    color: rgba(26, 43, 60, 0.75);
    padding: 0 0 18px;
    margin: 0 0 12px;
    border-bottom: 1px solid var(--rda-cream-border);
    line-height: 1.4;	border: none;
}
.rda-myaccount-profile strong {
    display: block;
    font-family: 'CarlaSans', sans-serif;
    font-size: 18px;
    font-weight: 600;
    color: var(--rda-navy);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    margin-top: 4px;
    font-variant-ligatures: no-common-ligatures;
}
/* Logout item séparé visuellement en bas */
.woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout {
    margin-top: 18px;
    padding-top: 12px;

}
.woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout a {
    color: rgba(26, 43, 60, 0.55);
}

/* ───────── Lost / reset password panes ───────── */
.rda-account-pane-lost-password p,
.rda-account-pane-reset-password p,
.rda-account-pane-lost-confirmation p {
    font-family: 'EB Garamond', serif;
    font-size: 15px;
    line-height: 1.5;
    color: rgba(26, 43, 60, 0.8);
    margin: 0 0 16px;
}
.rda-account-pane-lost-confirmation .button {
    display: inline-block;
    width: auto;
    background: var(--rda-terracotta);
    color: var(--rda-creme);
    padding: 12px 24px;
    text-decoration: none;
    font-family: 'Jost', sans-serif;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    font-size: 13px;
    transition: background-color 0.3s ease;
}
.rda-account-pane-lost-confirmation .button:hover { background: var(--rda-navy); }

/* ───────── Mobile ───────── */
@media (max-width: 600px) {
    .woocommerce-cart table.cart td.product-name { gap: 14px; }
    .woocommerce-cart .woocommerce-cart-form__cart-item__thumbnail,
    .woocommerce-cart .woocommerce-cart-form__cart-item__thumbnail img { flex: 0 0 72px; width: 72px !important; max-width: 72px !important; }
    .rda-account-pane { padding: 24px 22px; 		left: inherit!important;		position: relative;		margin: auto;		width: auto;	}
    .rda-account-pane .rda-account-heading { font-size: 19px; }
}

/* ============================================================
   42. AUDIT FINAL — Cart + Checkout + Shipping
   Override propre avec !important pour vaincre toutes les règles
   accumulées dans les sections précédentes.
   ============================================================ */

/* ───── CART PAGE : table prend toute la largeur dispo ───── */
.woocommerce-cart .woocommerce,
.woocommerce-cart .woocommerce-cart-form,
.woocommerce-cart .woocommerce-cart-form__contents,
.woocommerce-cart table.cart,
.woocommerce-cart table.shop_table {
    width: 100% !important;
    max-width: none !important;
    box-sizing: border-box;
}
.woocommerce-cart table.cart { table-layout: fixed !important; border-collapse: collapse !important; }

/* Cols cart : pourcentages explicites (60/25/15) — width:auto sur table-layout:fixed
   est interprété comme min-content par le browser et squiche la col produit. */
.woocommerce-cart table.cart thead th.product-name,
.woocommerce-cart table.cart tbody td.product-name { width: 60% !important; }
.woocommerce-cart table.cart thead th.product-quantity,
.woocommerce-cart table.cart tbody td.product-quantity { width: 25% !important; text-align: center !important; }
.woocommerce-cart table.cart thead th.product-subtotal,
.woocommerce-cart table.cart tbody td.product-subtotal { width: 15% !important; text-align: right !important; }

/* Cart actions row : pleine largeur + colspan implicite */
.woocommerce-cart table.cart tbody tr td.actions {
    padding: 24px 0 !important;
    border-top: 1px solid rgba(26, 43, 60, 0.15) !important;
}
/* Code promo + Appliquer = même ligne flex desktop */
.woocommerce-cart .coupon {
    display: flex !important;
    flex-direction: row !important;
    align-items: stretch !important;
    gap: 10px !important;
    margin: 0 0 12px 0 !important;
    width: 100% !important;
    max-width: none !important;
    float: none !important;
}
.woocommerce-cart .coupon label { display: none !important; }
.woocommerce-cart .coupon input[type="text"] {
    flex: 1 1 auto !important;
    width: auto !important;
    min-width: 0 !important;
    height: 50px !important;
    padding: 0 16px !important;
    border: 1px solid rgba(26, 43, 60, 0.25) !important;
    background: white !important;
    border-radius: 0 !important;
    font-family: 'EB Garamond', serif !important;
    font-size: 16px !important;
    margin: 0 !important;
    box-sizing: border-box !important;
}
.woocommerce-cart .coupon button[name="apply_coupon"],
.woocommerce-cart button[name="update_cart"] {
    flex: 0 0 auto !important;
    height: 50px !important;
    padding: 0 24px !important;
    font-family: 'Jost', sans-serif !important;
    font-size: 14px !important;
    text-transform: uppercase !important;
    letter-spacing: 0.12em !important;
    background-color: transparent !important;
    border: 1px solid var(--rda-navy) !important;
    color: var(--rda-navy) !important;
    border-radius: 0 !important;
    cursor: pointer !important;
    transition: all 0.3s ease !important;
    margin: 0 !important;
    box-sizing: border-box !important;
    white-space: nowrap !important;
}
.woocommerce-cart .coupon button[name="apply_coupon"]:hover,
.woocommerce-cart button[name="update_cart"]:hover {
    background-color: var(--rda-navy) !important;
    color: var(--rda-creme) !important;
}

/* ───── CHECKOUT order_review : tfoot rows en FLEX (label étroit + valeur large) ───── */
.woocommerce-checkout #order_review table.shop_table { table-layout: auto !important; width: 100% !important; }

/* Force tbody + tfoot en block pour que les tr enfants (en flex) prennent 100% largeur du conteneur */
.woocommerce-checkout #order_review table.shop_table tbody,
.woocommerce-checkout #order_review table.shop_table tfoot,
.woocommerce-cart .cart_totals tbody,
.woocommerce-cart .cart_totals tfoot {
    display: block !important;
    width: 100% !important;
}

/* Reset bordures parasites tfoot tr */
.woocommerce-checkout #order_review table.shop_table tfoot tr {
    border: 0 !important;
}
/* Chaque row tfoot devient flex : label gauche compact, valeur droite qui prend tout */
.woocommerce-checkout #order_review table.shop_table tfoot tr.cart-subtotal,
.woocommerce-checkout #order_review table.shop_table tfoot tr.cart-discount,
.woocommerce-checkout #order_review table.shop_table tfoot tr.fee,
.woocommerce-checkout #order_review table.shop_table tfoot tr.tax-total,
.woocommerce-checkout #order_review table.shop_table tfoot tr.tax-rate,
.woocommerce-checkout #order_review table.shop_table tfoot tr.order-total {
    display: flex !important;
    align-items: baseline !important;
    justify-content: space-between !important;
    gap: 16px !important;
    width: 100% !important;
    padding: 12px 0 !important;
    border-top: 1px solid rgba(26, 43, 60, 0.08) !important;
}
.woocommerce-checkout #order_review table.shop_table tfoot tr.cart-subtotal th,
.woocommerce-checkout #order_review table.shop_table tfoot tr.cart-discount th,
.woocommerce-checkout #order_review table.shop_table tfoot tr.fee th,
.woocommerce-checkout #order_review table.shop_table tfoot tr.tax-total th,
.woocommerce-checkout #order_review table.shop_table tfoot tr.tax-rate th,
.woocommerce-checkout #order_review table.shop_table tfoot tr.order-total th {
    display: block !important;
    flex: 0 0 auto !important;
    width: auto !important;
    padding: 0 !important;
    text-align: left !important;
    white-space: nowrap !important;
    border: 0 !important;
}
.woocommerce-checkout #order_review table.shop_table tfoot tr.cart-subtotal td,
.woocommerce-checkout #order_review table.shop_table tfoot tr.cart-discount td,
.woocommerce-checkout #order_review table.shop_table tfoot tr.fee td,
.woocommerce-checkout #order_review table.shop_table tfoot tr.tax-total td,
.woocommerce-checkout #order_review table.shop_table tfoot tr.tax-rate td,
.woocommerce-checkout #order_review table.shop_table tfoot tr.order-total td {
    display: block !important;
    flex: 1 1 auto !important;
    width: auto !important;
    padding: 0 !important;
    text-align: right !important;
    min-width: 0 !important;
    border: 0 !important;
}
/* Order total : police plus grosse, terracotta, mention TVA sur ligne en dessous */
.woocommerce-checkout #order_review table.shop_table tfoot tr.order-total {
    border-top: 1px solid rgba(26, 43, 60, 0.18) !important;
    padding-top: 16px !important;
    margin-top: 4px !important;
}
.woocommerce-checkout #order_review table.shop_table tfoot tr.order-total th { font-size: 18px !important; color: var(--rda-terracotta) !important; }
.woocommerce-checkout #order_review table.shop_table tfoot tr.order-total td { font-size: 18px !important; color: var(--rda-terracotta) !important; }
.woocommerce-checkout #order_review table.shop_table tfoot tr.order-total td small.includes_tax {
    display: block !important;
    font-size: 12px !important;
    color: rgba(204, 102, 51, 0.75) !important;
    margin-top: 4px !important;
    font-family: 'Jost', sans-serif !important;
    font-style: normal !important;
    text-transform: none !important;
}

/* ───── SHIPPING row checkout & cart : pleine largeur, pas de borders parasites ───── */
.woocommerce-checkout #order_review table.shop_table tfoot tr.woocommerce-shipping-totals.shipping,
.woocommerce-cart .cart_totals tr.woocommerce-shipping-totals.shipping {
    display: block !important;
    width: 100% !important;
    padding: 16px 0 !important;
    border-top: 1px solid rgba(26, 43, 60, 0.08) !important;
    border-bottom: 0 !important;
}
.woocommerce-checkout #order_review table.shop_table tfoot tr.woocommerce-shipping-totals.shipping th,
.woocommerce-cart .cart_totals tr.woocommerce-shipping-totals.shipping th {
    display: block !important;
    width: 100% !important;
    padding: 0 0 10px 0 !important;
    text-align: left !important;
    border: 0 !important;
    background: transparent !important;
}
.woocommerce-checkout #order_review table.shop_table tfoot tr.woocommerce-shipping-totals.shipping td,
.woocommerce-cart .cart_totals tr.woocommerce-shipping-totals.shipping td {
    display: block !important;
    width: 100% !important;
    padding: 0 !important;
    text-align: left !important;
    border: 0 !important;
    background: transparent !important;
}
/* UL shipping methods plein largeur, sans liste */
.woocommerce-checkout #order_review tr.shipping td ul#shipping_method,
.woocommerce-cart .cart_totals tr.shipping td ul#shipping_method {
    width: 100% !important;
    display: block !important;
    margin: 0 !important;
    padding: 0 !important;
    list-style: none !important;
}
/* LI : radio gauche + label flex right, pas de borders parasites */
.woocommerce-checkout #shipping_method li,
.woocommerce-cart #shipping_method li {
    display: flex !important;
    flex-direction: row !important;
    flex-wrap: nowrap !important; /* radio + label restent sur même ligne, label wrap INTERNE seulement */
    align-items: flex-start !important;
    gap: 10px !important;
    padding: 10px 0 !important;
    width: 100% !important;
    border: 0 !important;
    border-bottom: 1px dashed rgba(26, 43, 60, 0.08) !important;
    margin: 0 !important;
    text-align: left !important;
}
.woocommerce-checkout #shipping_method li:last-child,
.woocommerce-cart #shipping_method li:last-child { border-bottom: 0 !important; }
.woocommerce-checkout #shipping_method li input[type="radio"],
.woocommerce-cart #shipping_method li input[type="radio"] {
    flex: 0 0 18px !important;
    width: 18px !important;
    height: 18px !important;
    margin: 4px 0 0 0 !important;
    accent-color: var(--rda-terracotta) !important;
    cursor: pointer !important;
}
.woocommerce-checkout #shipping_method li label,
.woocommerce-cart #shipping_method li label {
    display: block !important;
    flex: 1 1 auto !important;
    min-width: 0 !important;
    margin: 0 !important;
    text-align: left !important;
    font-family: 'EB Garamond', serif !important;
    font-size: 16px !important;
    line-height: 1.4 !important;
    color: var(--rda-navy) !important;
    text-transform: none !important;
    letter-spacing: 0 !important;
    font-weight: 400 !important;
    cursor: pointer !important;
    overflow-wrap: break-word !important;
}

/* ───── DELETE ICON : rond, fond blanc, sans border, croix nette ───── */
.woocommerce-cart .woocommerce-cart-form__cart-item__thumbnail .product-remove {
    position: absolute !important;
    top: -8px !important;
    right: -8px !important;
    z-index: 2 !important;
    width: 28px !important;
    height: 28px !important;
    aspect-ratio: 1 / 1 !important;
    background: white !important;
    border: 0 !important;
    border-radius: 50% !important;
    box-shadow: 0 2px 6px rgba(26, 43, 60, 0.18) !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    transition: transform 0.2s ease, box-shadow 0.2s ease !important;
}
.woocommerce-cart .woocommerce-cart-form__cart-item__thumbnail .product-remove .remove {
    color: var(--rda-navy) !important;
    font-size: 22px !important;
    line-height: 1 !important;
    font-weight: 300 !important;
    text-decoration: none !important;
    background: transparent !important;
    width: auto !important;
    height: auto !important;
    padding: 0 !important;
    display: block !important;
}
.woocommerce-cart .woocommerce-cart-form__cart-item__thumbnail .product-remove:hover {
    box-shadow: 0 3px 10px rgba(26, 43, 60, 0.25) !important;
    transform: scale(1.06) !important;
}
.woocommerce-cart .woocommerce-cart-form__cart-item__thumbnail .product-remove:hover .remove {
    color: var(--rda-terracotta) !important;
}

/* ───── MOBILE (≤768px) : tout en stack vertical clean ───── */
@media (max-width: 768px) {		.woocommerce-orders-table__row.woocommerce-orders-table__row--status-processing.order th.woocommerce-orders-table__cell.woocommerce-orders-table__cell-order-number {	border: none;}	.rda-account-pane {
    left: 0%;	width: auto;	}	.woocommerce-account .woocommerce-MyAccount-content {	width: 100%;	}
    /* Cart items en grid 2 cols */
    .woocommerce-cart table.cart { table-layout: auto !important; }
    .woocommerce-cart table.cart thead { display: none !important; }
    .woocommerce-cart table.cart tbody tr {
        display: grid !important;
        grid-template-columns: 1fr auto !important;
        gap: 12px 16px !important;
        padding: 20px 0 !important;
        border-bottom: 1px solid rgba(26, 43, 60, 0.08) !important;
        align-items: center !important;
    }
    .woocommerce-cart table.cart tbody tr td {
        display: block !important;
        padding: 0 !important;
        border: 0 !important;
        width: auto !important;
    }
    .woocommerce-cart table.cart td.product-name {
        grid-column: 1 / -1 !important;
        text-align: left !important;
        padding-right: 0 !important;
    }
    .woocommerce-cart table.cart td.product-quantity {
        grid-column: 1 !important;
        text-align: left !important;
        justify-self: start !important;
    }
    .woocommerce-cart table.cart td.product-subtotal {
        grid-column: 2 !important;
        display: block !important;
        text-align: right !important;
        font-family: 'Jost', sans-serif !important;
        font-weight: 600 !important;
        color: var(--rda-terracotta) !important;
        font-size: 16px !important;
        white-space: nowrap !important;
    }
    /* Actions row : block plein largeur, pas dans le grid */
    .woocommerce-cart table.cart tbody tr:has(td.actions) {
        display: block !important;
        padding: 0 !important;
        border-bottom: 0 !important;
    }
    .woocommerce-cart table.cart tbody tr td.actions {
        display: flex !important;
        flex-direction: column !important;
        gap: 12px !important;
        padding: 24px 0 !important;
        width: 100% !important;
    }
    .woocommerce-cart .coupon {
        flex-direction: column !important;
        gap: 10px !important;
        width: 100% !important;
    }
    .woocommerce-cart .coupon input[type="text"],
    .woocommerce-cart .coupon button[name="apply_coupon"],
    .woocommerce-cart button[name="update_cart"] {
        width: 100% !important;
        flex: 1 1 100% !important;
        height: 52px !important;
        font-size: 14px !important;
        padding: 0 18px !important;
    }
    .woocommerce-cart .coupon input[type="text"] {
        font-size: 16px !important; /* anti-zoom iOS */
    }
}

/* ========================================
   43. RDA-TOTALS — Flex layout pour totaux + shipping (s'affranchit des tables)
   Utilisé par cart-totals.php + cart-shipping.php + review-order.php overrides.
   Architecture : <dl class="rda-totals"> contenant des <div class="rda-totals-row">
   avec <dt> (label) et <dd> (valeur).
   ======================================== */

dl.rda-totals {
    display: flex !important;
    flex-direction: column !important;
    gap: 0 !important;
    margin: 0 0 24px !important;
    padding: 0 !important;
    width: 100% !important;
}

dl.rda-totals .rda-totals-row {
    display: flex !important;
    align-items: baseline !important;
    justify-content: space-between !important;
    gap: 16px !important;
    padding: 14px 0 !important;
    margin: 0 !important;
    border-top: 1px solid rgba(26, 43, 60, 0.08) !important;
    width: 100% !important;
}
dl.rda-totals .rda-totals-row:first-child { border-top: 0 !important; padding-top: 0 !important; }

dl.rda-totals .rda-totals-row dt {
    flex: 0 0 auto !important;
    margin: 0 !important;
    padding: 0 !important;
    font-family: 'Jost', sans-serif !important;
    font-size: 12px !important;
    text-transform: uppercase !important;
    letter-spacing: 0.1em !important;
    font-weight: 500 !important;
    color: rgba(26, 43, 60, 0.7) !important;
}

dl.rda-totals .rda-totals-row dd {
    flex: 1 1 auto !important;
    margin: 0 !important;
    padding: 0 !important;
    text-align: right !important;
    font-family: 'Jost', sans-serif !important;
    font-size: 16px !important;
    font-weight: 500 !important;
    color: var(--rda-navy) !important;
    min-width: 0 !important;
}

/* Sous-total / Total : terracotta + plus gros */
.rda-totals-row.rda-totals-subtotal dd,
.rda-totals-row.rda-totals-order-total dd {
    color: var(--rda-terracotta);
}
.rda-totals-row.rda-totals-order-total {
    border-top: 1px solid rgba(26, 43, 60, 0.18);
    padding-top: 18px;
    padding-bottom: 6px;
    margin-top: 4px;
}
.rda-totals-row.rda-totals-order-total dt {
    font-size: 14px;
    color: var(--rda-navy);
    font-weight: 600;
}
.rda-totals-row.rda-totals-order-total dd {
    font-size: 20px;
    font-weight: 600;
}
/* "(dont X € TVA)" sous le total */
.rda-totals-row.rda-totals-order-total dd small.includes_tax {
    display: block;
    margin-top: 4px;
    font-family: 'Jost', sans-serif;
    font-size: 11px;
    font-weight: 400;
    color: rgba(195, 106, 77, 0.75);
    font-style: normal;
    letter-spacing: 0.02em;
    text-transform: none;
}

/* TTC suffix dans .amount */
.rda-totals-row dd .woocommerce-price-suffix {
    font-family: 'Jost', sans-serif;
    font-size: 10px;
    font-weight: 400;
    color: inherit;
    opacity: 0.7;
    margin-left: 4px;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

/* SHIPPING row : flex column (label au-dessus, options en dessous full-width) */
.rda-totals-row.rda-totals-shipping {
    flex-direction: column;
    align-items: stretch;
    gap: 10px;
    padding: 14px 0;
}
.rda-totals-row.rda-totals-shipping dt {
    text-align: left;
}
.rda-totals-row.rda-totals-shipping dd {
    text-align: left;
    font-family: 'EB Garamond', serif;
    font-size: 16px;
    color: var(--rda-navy);
    font-weight: 400;
}
.rda-totals-row.rda-totals-shipping dd ul#shipping_method {
    list-style: none;
    margin: 0;
    padding: 0;
    width: 100%;
    display: flex;
    flex-direction: column;
    gap: 0;
}
.rda-totals-row.rda-totals-shipping dd ul#shipping_method li {
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    align-items: flex-start;
    gap: 10px;
    padding: 10px 0;
    border-bottom: 1px dashed rgba(26, 43, 60, 0.08);
    margin: 0;
    text-align: left;
    width: 100%;
}
.rda-totals-row.rda-totals-shipping dd ul#shipping_method li:last-child {
    border-bottom: 0;
}
.rda-totals-row.rda-totals-shipping dd ul#shipping_method input[type="radio"] {
    flex: 0 0 18px;
    width: 18px;
    height: 18px;
    margin: 4px 0 0 0;
    accent-color: var(--rda-terracotta);
    cursor: pointer;
}
.rda-totals-row.rda-totals-shipping dd ul#shipping_method label {
    display: block;
    flex: 1 1 auto;
    min-width: 0;
    margin: 0;
    text-align: left;
    font-family: 'EB Garamond', serif;
    font-size: 16px;
    line-height: 1.45;
    color: var(--rda-navy);
    cursor: pointer;
    font-weight: 400;
    text-transform: none;
    letter-spacing: 0;
    overflow-wrap: break-word;
    word-wrap: break-word;
}
.rda-totals-row.rda-totals-shipping .woocommerce-shipping-destination {
    margin: 8px 0 0;
    font-family: 'EB Garamond', serif;
    font-style: italic;
    font-size: 14px;
    color: rgba(26, 43, 60, 0.6);
}
.rda-totals-row.rda-totals-shipping .shipping-calculator-button,
.rda-totals-row.rda-totals-shipping .shipping-calculator-form {
    margin-top: 10px;
}

/* Discount row (coupon appliqué) */
.rda-totals-row.rda-totals-discount dd {
    color: var(--rda-terracotta);
}
.rda-totals-row.rda-totals-discount dd .woocommerce-remove-coupon {
    margin-left: 8px;
    font-family: 'Jost', sans-serif;
    font-size: 11px;
    color: rgba(26, 43, 60, 0.5);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    text-decoration: none;
}
.rda-totals-row.rda-totals-discount dd .woocommerce-remove-coupon:hover {
    color: var(--rda-terracotta);
}

/* Bouton "Procéder au paiement" sous les totaux */
.cart_totals .wc-proceed-to-checkout {
    margin-top: 18px;
}
.cart_totals .wc-proceed-to-checkout a.checkout-button {
    display: block;
    width: 100%;
    text-align: center;
    background-color: var(--rda-terracotta);
    color: var(--rda-creme);
    border: 0;
    border-radius: 0;
    font-family: 'Jost', sans-serif;
    text-transform: uppercase;
    letter-spacing: 0.15em;
    font-size: 14px;
    font-weight: 500;
    padding: 16px 24px;
    text-decoration: none;
    transition: background-color 0.3s ease;
    box-sizing: border-box;
}
.cart_totals .wc-proceed-to-checkout a.checkout-button:hover {
    background-color: var(--rda-navy);
}

/* ========================================
   44. WAPF (Advanced Product Fields by Studio Wombat) — charte RDA
   DOM réel :
   <div class="wapf_field_groups">
     <div class="wapf-field-row">
       <div class="wapf-field-container wapf-field-text">
         <div class="wapf-field-label wapf--above"><label>
           <span>Ajouter une dédicace</span>
           <span class="wapf-pricing-hint">(+15,00 €)</span>
         </label></div>
         <div class="wapf-field-input"><input class="wapf-input" ...></div>
         <div class="wapf-field-description">...</div>
       </div>
     </div>
   </div>
   <div class="wapf-product-totals"><div class="wapf--inner">
     <div><span>Total produit</span><span class="wapf-product-total">...</span></div>
     <div><span>Total des options</span><span class="wapf-options-total">...</span></div>
     <div><span>Total général</span><span class="wapf-grand-total">...</span></div>
   </div></div>
   ======================================== */

/* Repositionnement : WAPF AU-DESSUS du prix variation via flex order */
/* (Anciennes règles flex order WAPF retirées — WAPF abandonné, DOM order natif suffit :
   Format/Papier → dédicace custom → single_variation_wrap → price) */

/* Container field groups : carte avec border-left terracotta (charte RDA) */
.wapf_field_groups {
    margin: 0 0 18px 0 !important;
    padding: 18px 22px !important;
    background: rgba(204, 102, 51, 0.05) !important;
    border-left: 3px solid var(--rda-terracotta) !important;
    border-radius: 0 !important;
    font-family: 'Jost', sans-serif !important;
}

/* Label du field (texte "Ajouter une dédicace") */
.wapf_field_groups .wapf-field-label,
.wapf_field_groups .wapf-field-label label {
    font-family: 'Jost', sans-serif !important;
    font-size: 14px !important;
    font-weight: 500 !important;
    color: var(--rda-navy) !important;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin: 0 0 8px 0 !important;
    display: block;
}
.wapf_field_groups .wapf-field-label label {
    cursor: text;
    padding: 0;
}
.wapf_field_groups .wapf-field-label label > span:first-child {
    display: inline;
}

/* Indicateur prix "(+15,00 €)" — terracotta visible */
.wapf_field_groups .wapf-pricing-hint {
    font-family: 'Jost', sans-serif !important;
    color: var(--rda-terracotta) !important;
    font-weight: 600 !important;
    font-size: 13px !important;
    margin-left: 6px !important;
    text-transform: none;
    letter-spacing: 0;
}

/* Input text (champ dédicace) */
.wapf_field_groups input.wapf-input,
.wapf_field_groups input[type="text"],
.wapf_field_groups input[type="email"],
.wapf_field_groups textarea {
    width: 100% !important;
    padding: 12px 14px !important;
    border: 1px solid rgba(26, 43, 60, 0.22) !important;
    background: white !important;
    border-radius: 0 !important;
    font-family: 'EB Garamond', serif !important;
    font-style: italic !important;
    font-size: 16px !important;
    color: var(--rda-navy) !important;
    box-sizing: border-box !important;
    height: auto !important;
    line-height: 1.4 !important;
}
.wapf_field_groups input.wapf-input:focus,
.wapf_field_groups input[type="text"]:focus,
.wapf_field_groups textarea:focus {
    outline: none !important;
    border-color: var(--rda-terracotta) !important;
    box-shadow: 0 0 0 2px rgba(195, 106, 77, 0.15) !important;
}

/* Help text sous l'input */
.wapf_field_groups .wapf-field-description {
    display: block !important;
    margin-top: 8px !important;
    font-family: 'EB Garamond', serif !important;
    font-size: 13px !important;
    color: rgba(26, 43, 60, 0.6) !important;
    font-style: italic !important;
    line-height: 1.4 !important;
}

/* Field row (wrapper interne) */
.wapf_field_groups .wapf-field-row,
.wapf_field_groups .wapf-field-container {
    margin: 0 !important;
    padding: 0 !important;
    width: 100% !important;
}

/* === WAPF Totals breakdown : masque "Total produit" + "Total des options" === */
.wapf-product-totals {
    margin: 0 0 14px 0 !important;
    padding: 12px 0 0 0 !important;
    border-top: 1px solid rgba(26, 43, 60, 0.1) !important;
    font-family: 'Jost', sans-serif !important;
}
.wapf-product-totals .wapf--inner {
    display: block !important;
}
.wapf-product-totals .wapf--inner > div {
    display: flex !important;
    justify-content: space-between !important;
    align-items: baseline !important;
    padding: 4px 0 !important;
}
.wapf-product-totals .wapf--inner > div:not(:last-child) {
    display: none !important;
}
.wapf-product-totals .wapf--inner > div:last-child {
    font-family: 'CarlaSans', sans-serif !important;
    font-size: 24px !important;
    font-weight: 600 !important;
    color: var(--rda-terracotta) !important;
    padding: 0 !important;
    justify-content: flex-start !important;
}
.wapf-product-totals .wapf--inner > div:last-child > span:first-child {
    display: none !important;
}
.wapf-product-totals .wapf--inner > div:last-child .wapf-grand-total::after {
    content: ' TTC';
    font-family: 'Jost', sans-serif !important;
    font-size: 11px !important;
    font-weight: 400 !important;
    color: rgba(195, 106, 77, 0.75) !important;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    margin-left: 6px;
    vertical-align: middle;
    position: relative;
    top: -3px;
}
/* (legacy hide retiré — custom dédicace block + WC variation price réactivés après abandon WAPF) */

/* ========================================
   46. WC EMPTY CART — Style focalisé sur l'état vide UNIQUEMENT
   Pas de layout global sur .wc-block-cart (qui cassait avant).
   Cible : .wp-block-woocommerce-empty-cart-block + contenu Gutenberg dedans.
   ======================================== */

/* Container empty cart : center, max-width */
.wp-block-woocommerce-empty-cart-block {
    max-width: 980px;
    margin: 0 auto;
    padding: 20px 0 60px;
    text-align: center;
}

/* Sad icon SVG (le rond noir avec smile triste) — réduire taille + opacity */
.wp-block-woocommerce-empty-cart-block .wc-block-cart__empty-cart__title,
.wp-block-woocommerce-empty-cart-block > svg,
.wp-block-woocommerce-empty-cart-block > .wc-block-cart-empty-cart-icon,
.wp-block-woocommerce-empty-cart-block > p:first-child > img {
    margin: 0 auto 16px;
}
.wp-block-woocommerce-empty-cart-block svg.wc-block-cart-empty-cart-icon {
    width: 48px;
    height: 48px;
    color: rgba(26, 43, 60, 0.35);
    opacity: 0.7;
    display: block;
    margin: 0 auto 20px;
}
/* Si WC affiche un emoji ou une figure simple, harmoniser */
.wp-block-woocommerce-empty-cart-block .wc-block-cart__empty-cart__title {
    font-family: 'CarlaSans', sans-serif !important;
    font-size: 14px !important;
    font-weight: 500 !important;
    text-transform: uppercase;
    letter-spacing: 0.15em;
    color: rgba(26, 43, 60, 0.6) !important;
    margin: 0 0 18px !important;
    font-variant-ligatures: no-common-ligatures;
}

/* "Votre panier est vide" titre (h2) */
.wp-block-woocommerce-empty-cart-block h2.wp-block-heading,
.wp-block-woocommerce-empty-cart-block .wp-block-heading {
    font-family: 'CarlaSans', sans-serif !important;
    font-size: 22px !important;
    font-weight: 500 !important;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: var(--rda-navy) !important;
    margin: 0 0 12px !important;
    font-variant-ligatures: no-common-ligatures;
    text-align: center;
}

/* Paragraphe description */
.wp-block-woocommerce-empty-cart-block p,
.wp-block-woocommerce-empty-cart-block .wp-block-paragraph {
    font-family: 'EB Garamond', serif !important;
    font-size: 17px !important;
    line-height: 1.5 !important;
    color: rgba(26, 43, 60, 0.7) !important;
    font-style: italic !important;
    margin: 0 0 24px !important;
    text-align: center;
}

/* Séparateur dots */
.wp-block-woocommerce-empty-cart-block .wp-block-separator,
.wp-block-woocommerce-empty-cart-block hr.wp-block-separator {
    width: 80px !important;
    margin: 24px auto !important;
    border: 0 !important;
    border-top: 1px solid rgba(26, 43, 60, 0.18) !important;
    background: none !important;
}
.wp-block-woocommerce-empty-cart-block .wp-block-separator.is-style-dots {
    border-top: 0 !important;
}
.wp-block-woocommerce-empty-cart-block .wp-block-separator.is-style-dots::before {
    color: rgba(26, 43, 60, 0.3) !important;
    letter-spacing: 1em !important;
    padding-left: 1em !important;
    font-size: 22px !important;
}

/* Heading "Notre Collection" (h2 sous le séparateur) */
.wp-block-woocommerce-empty-cart-block .wp-block-heading.has-text-align-center:nth-of-type(2),
.wp-block-woocommerce-empty-cart-block > h2:last-of-type {
    font-family: 'CarlaSans', sans-serif !important;
    font-size: 20px !important;
    font-weight: 500 !important;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--rda-navy) !important;
    margin: 28px 0 24px !important;
}

/* Product grid (wc-block-grid) — 4 cols desktop, 2 mobile */
.wp-block-woocommerce-empty-cart-block .wc-block-grid {
    margin: 16px 0 0 !important;
}
.wp-block-woocommerce-empty-cart-block .wc-block-grid__products {
    display: grid !important;
    grid-template-columns: repeat(2, 1fr) !important;
    gap: 28px !important;
    list-style: none !important;
    padding: 0 !important;
    margin: 0 !important;
}
@media (min-width: 768px) {
    .wp-block-woocommerce-empty-cart-block .wc-block-grid__products {
        grid-template-columns: repeat(4, 1fr) !important;
        gap: 24px !important;
    }
}
.wp-block-woocommerce-empty-cart-block .wc-block-grid__product {
    text-align: center !important;
    background: transparent !important;
    margin: 0 !important;
    padding: 0 !important;
}
.wp-block-woocommerce-empty-cart-block .wc-block-grid__product-link,
.wp-block-woocommerce-empty-cart-block .wc-block-grid__product a {
    text-decoration: none !important;
    color: inherit !important;
}
.wp-block-woocommerce-empty-cart-block .wc-block-grid__product-image {
    margin-bottom: 16px !important;
}
.wp-block-woocommerce-empty-cart-block .wc-block-grid__product-image img {
    width: 100% !important;
    height: auto !important;
    aspect-ratio: 3 / 4 !important;
    object-fit: cover !important;
    filter: drop-shadow(0 4px 14px rgba(26, 43, 60, 0.12));
    border-radius: 0 !important;
    transition: transform 0.4s ease;
}
.wp-block-woocommerce-empty-cart-block .wc-block-grid__product:hover .wc-block-grid__product-image img {
    transform: scale(1.03);
}
.wp-block-woocommerce-empty-cart-block .wc-block-grid__product-title {
    font-family: 'CarlaSans', sans-serif !important;
    font-size: 14px !important;
    font-weight: 600 !important;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--rda-navy) !important;
    margin: 0 0 8px !important;
    line-height: 1.3 !important;
    font-variant-ligatures: no-common-ligatures;
}
.wp-block-woocommerce-empty-cart-block .wc-block-grid__product-price {
    font-family: 'Jost', sans-serif !important;
    font-size: 14px !important;
    font-weight: 500 !important;
    color: var(--rda-terracotta) !important;
    margin: 0 0 14px !important;
}
.wp-block-woocommerce-empty-cart-block .wc-block-grid__product-price .price {
    color: inherit !important;
}
.wp-block-woocommerce-empty-cart-block .wc-block-grid__product-price ins {
    text-decoration: none !important;
    font-weight: 600 !important;
}
.wp-block-woocommerce-empty-cart-block .wc-block-grid__product-price del {
    color: rgba(26, 43, 60, 0.4) !important;
    font-size: 12px !important;
    font-weight: 400 !important;
}
/* "Choisir une option" button (variable products) → pill terracotta */
.wp-block-woocommerce-empty-cart-block .wc-block-grid__product-add-to-cart .button,
.wp-block-woocommerce-empty-cart-block .wc-block-grid__product-add-to-cart .wp-block-button__link,
.wp-block-woocommerce-empty-cart-block .wc-block-grid__product a.button {
    display: inline-block !important;
    background: var(--rda-terracotta) !important;
    color: var(--rda-creme) !important;
    border: 0 !important;
    border-radius: 0 !important;
    font-family: 'Jost', sans-serif !important;
    text-transform: uppercase !important;
    letter-spacing: 0.1em !important;
    font-size: 12px !important;
    font-weight: 500 !important;
    padding: 10px 18px !important;
    text-decoration: none !important;
    transition: background-color 0.3s ease !important;
    line-height: 1.2 !important;
    margin-top: 4px !important;
}
.wp-block-woocommerce-empty-cart-block .wc-block-grid__product-add-to-cart .button:hover,
.wp-block-woocommerce-empty-cart-block .wc-block-grid__product-add-to-cart .wp-block-button__link:hover,
.wp-block-woocommerce-empty-cart-block .wc-block-grid__product a.button:hover {
    background: var(--rda-navy) !important;
    color: var(--rda-creme) !important;
}

/* ========================================
   47. CHECKOUT — Bannière login inline (déjà client ?)
   Toggle <details>/<summary> au-dessus du block checkout.
   ======================================== */
.rda-checkout-login-banner {
    margin: 0 0 24px;
    padding: 0;
}
.rda-checkout-login-toggle {
    background: rgba(204, 102, 51, 0.05);
    border-left: 3px solid var(--rda-terracotta);
    padding: 0;
}
.rda-checkout-login-toggle > summary {
    cursor: pointer;
    list-style: none;
    padding: 14px 20px;
    font-family: 'Jost', sans-serif;
    font-size: 14px;
    color: var(--rda-navy);
    user-select: none;
}
.rda-checkout-login-toggle > summary::-webkit-details-marker { display: none; }
.rda-checkout-login-toggle > summary::before {
    content: '+';
    display: inline-block;
    margin-right: 10px;
    color: var(--rda-terracotta);
    font-weight: 600;
    width: 14px;
    text-align: center;
    transition: transform 0.2s ease;
}
.rda-checkout-login-toggle[open] > summary::before {
    content: '−';
}
.rda-checkout-login-prompt strong {
    color: var(--rda-terracotta);
    font-weight: 600;
    text-decoration: underline;
    text-underline-offset: 2px;
}
.rda-checkout-login-form {
    padding: 8px 20px 20px;
    border-top: 1px solid rgba(26, 43, 60, 0.08);
    margin-top: 4px;
}
.rda-checkout-login-row {
    display: grid;
    grid-template-columns: 1fr;
    gap: 12px;
    margin-bottom: 14px;
}
@media (min-width: 640px) {
    .rda-checkout-login-row {
        grid-template-columns: 1fr 1fr;
    }
}
.rda-checkout-login-form label {
    display: block;
    font-family: 'Jost', sans-serif;
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: var(--rda-navy);
    font-weight: 500;
}
.rda-checkout-login-form input[type="text"],
.rda-checkout-login-form input[type="password"] {
    display: block;
    width: 100%;
    margin-top: 6px;
    padding: 10px 14px;
    border: 1px solid rgba(26, 43, 60, 0.22);
    background: white;
    border-radius: 0;
    font-family: 'EB Garamond', serif;
    font-size: 16px;
    color: var(--rda-navy);
    height: 42px;
    box-sizing: border-box;
}
.rda-checkout-login-form input:focus {
    outline: none;
    border-color: var(--rda-terracotta);
    box-shadow: 0 0 0 2px rgba(195, 106, 77, 0.15);
}
.rda-checkout-login-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 12px;
    justify-content: space-between;
    margin-bottom: 8px;
}
.rda-checkout-login-remember {
    display: flex !important;
    align-items: center;
    gap: 6px;
    font-family: 'EB Garamond', serif !important;
    font-size: 14px !important;
    color: var(--rda-navy) !important;
    text-transform: none !important;
    letter-spacing: 0 !important;
    font-weight: 400 !important;
    margin: 0 !important;
    cursor: pointer;
}
.rda-checkout-login-remember input { accent-color: var(--rda-terracotta); margin: 0; }
.rda-checkout-login-submit {
    background: var(--rda-terracotta);
    color: var(--rda-creme);
    border: 0;
    border-radius: 0;
    font-family: 'Jost', sans-serif;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    font-size: 14px;
    font-weight: 500;
    padding: 0 22px;
    height: 42px;
    cursor: pointer;
    transition: background-color 0.3s ease;
}
.rda-checkout-login-submit:hover {
    background: var(--rda-navy);
}
.rda-checkout-login-lost {
    margin: 0;
    text-align: right;
}
.rda-checkout-login-lost a {
    font-family: 'Jost', sans-serif;
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--rda-terracotta);
    text-decoration: none;
    border-bottom: 1px solid currentColor;
    padding-bottom: 1px;
}
.rda-checkout-login-lost a:hover { color: var(--rda-navy); }

/* ========================================
   48. WC BLOCKS CHECKOUT — charte RDA (sans casser le layout)
   Styling sécurisé : SEULEMENT typography, couleurs, padding inputs.
   PAS de grid-template-columns ou layout (qui cassait avant).
   ======================================== */

/* === Step headings (COORDONNEES, ADRESSE, EXPÉDITION, PAIEMENT) === */
.wc-block-components-checkout-step__title,
.wc-block-components-checkout-step h2 {
    font-family: 'CarlaSans', sans-serif !important;
    font-size: 18px !important;
    font-weight: 600 !important;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--rda-navy) !important;
    margin: 0 0 8px !important;
    font-variant-ligatures: no-common-ligatures;
}
.wc-block-components-checkout-step__description {
    font-family: 'EB Garamond', serif !important;
    font-style: italic !important;
    font-size: 14px !important;
    color: rgba(26, 43, 60, 0.65) !important;
    margin-bottom: 14px !important;
}

/* === Form inputs : Garamond 16px, border navy, focus navy === */
.wc-block-components-text-input input,
.wc-block-components-text-input textarea,
.wc-block-components-text-input select,
.wc-block-components-combobox input,
.wc-block-components-form input[type="text"],
.wc-block-components-form input[type="email"],
.wc-block-components-form input[type="tel"],
.wc-block-components-form input[type="number"],
.wc-block-components-form select,
.wc-block-components-form textarea {
    font-family: 'EB Garamond', serif !important;
    font-size: 16px !important;
    color: var(--rda-navy) !important;
    border: 1px solid rgba(26, 43, 60, 0.22) !important;
    border-radius: 0 !important;
    background: white !important;
    min-height: 48px;
    box-sizing: border-box !important;
    transition: border-color 0.2s ease;
}
.wc-block-components-text-input input:focus,
.wc-block-components-text-input textarea:focus,
.wc-block-components-form input:focus,
.wc-block-components-form select:focus,
.wc-block-components-form textarea:focus {
    outline: none !important;
    border-color: var(--rda-navy) !important;
}

/* Label flottant (floated label) — Jost 12px navy (PAS terracotta) */
.wc-block-components-text-input label,
.wc-block-components-checkbox__label,
.wc-block-components-form label {
    font-family: 'Jost', sans-serif !important;
    font-size: 12px !important;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: rgba(26, 43, 60, 0.7) !important;
    font-weight: 500 !important;
}
/* Floated label active : reste navy, pas de terracotta */
.wc-block-components-text-input.is-active label,
.wc-block-components-text-input input:focus + label,
.wc-block-components-text-input input:not(:placeholder-shown) + label {
    color: var(--rda-navy) !important;
}

/* === Bouton "Place Order" / "Valider la commande" ===
   Le bouton du panier porte « wc-block-cart__submit-button » mais PAS « contained » :
   il echappait donc a cette regle et gardait l'habillage par defaut de WooCommerce,
   un gris ardoise en Garamond sans capitales. Il est ajoute a la liste, dans ses deux
   formes, WooCommerce le rendant tantot en bouton tantot en lien. */
button.wc-block-components-checkout-place-order-button,
button.wc-block-components-button.contained,
button.wc-block-cart__submit-button,
a.wc-block-cart__submit-button,
.wc-block-cart__submit-container .wc-block-components-button {
    background: var(--rda-terracotta) !important;
    color: var(--rda-creme) !important;
    border: 0 !important;
    border-radius: 0 !important;
    font-family: 'Jost', sans-serif !important;
    text-transform: uppercase !important;
    letter-spacing: 0.15em !important;
    font-size: 14px !important;
    font-weight: 500 !important;
    padding: 16px 28px !important;
    cursor: pointer;
    transition: background-color 0.3s ease !important;
}
button.wc-block-components-checkout-place-order-button:hover,
button.wc-block-components-button.contained:hover,
button.wc-block-cart__submit-button:hover,
a.wc-block-cart__submit-button:hover,
.wc-block-cart__submit-container .wc-block-components-button:hover {
    background: var(--rda-navy) !important;
}
/* Le libelle est parfois enveloppe dans un span qui porte sa propre couleur. */
button.wc-block-cart__submit-button .wc-block-components-button__text,
a.wc-block-cart__submit-button .wc-block-components-button__text {
    color: inherit !important;
    font: inherit !important;
    letter-spacing: inherit !important;
    text-transform: inherit !important;
}

/* === Order summary sidebar items === */
.wc-block-components-totals-item__label {
    font-family: 'Jost', sans-serif !important;
    font-size: 12px !important;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: rgba(26, 43, 60, 0.7) !important;
    font-weight: 500 !important;
}
.wc-block-components-totals-item__value {
    font-family: 'Jost', sans-serif !important;
    font-size: 16px !important;
    color: var(--rda-navy) !important;
    font-weight: 500 !important;
}
/* Footer total : terracotta + 20px (seul élément terracotta du sidebar) + suffixe TTC */
.wc-block-components-totals-footer-item .wc-block-components-totals-item__value {
    color: var(--rda-terracotta) !important;
    font-size: 20px !important;
    font-weight: 600 !important;
}
.wc-block-components-totals-footer-item .wc-block-components-totals-item__value::after {
    content: ' TTC';
    font-family: 'Jost', sans-serif;
    font-size: 11px;
    font-weight: 400;
    color: rgba(195, 106, 77, 0.75);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    margin-left: 4px;
    vertical-align: middle;
    position: relative;
    top: -2px;
}
.wc-block-components-totals-footer-item .wc-block-components-totals-item__label {
    font-size: 14px !important;
    color: var(--rda-navy) !important;
}

/* === Cart item dans sidebar (Block Checkout review) === */
.wc-block-components-order-summary-item__description .wc-block-components-product-name,
.wc-block-components-product-name {
    font-family: 'CarlaSans', sans-serif !important;
    font-size: 14px !important;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--rda-navy) !important;
    text-decoration: none !important;
    font-weight: 600;
}
.wc-block-components-order-summary-item__quantity {
    background: var(--rda-navy) !important;
    color: var(--rda-creme) !important;
    font-family: 'Jost', sans-serif !important;
    font-weight: 500 !important;
    border: 0 !important;
}
.wc-block-components-order-summary-item__total-price,
.wc-block-components-product-price {
    font-family: 'Jost', sans-serif !important;
    color: var(--rda-navy) !important;
    font-weight: 500 !important;
}
.wc-block-components-product-metadata,
.wc-block-components-product-variation-data {
    font-family: 'EB Garamond', serif !important;
    font-style: italic !important;
    font-size: 14px !important;
    color: rgba(26, 43, 60, 0.65) !important;
}
/* Dédicace (seule entrée item_data) → terracotta dans le cart/checkout Blocks.
   Les attributs de variation passent par .wc-block-components-product-variation-data (gris, au-dessus). */
.wc-block-components-product-details,
.wc-block-components-product-details__item,
.wc-block-components-product-details__name,
.wc-block-components-product-details__value {
    font-family: 'EB Garamond', serif !important;
    font-style: italic !important;
    font-size: 14px !important;
    color: rgba(26, 43, 60, 0.65) !important;
}
/* Seule la dédicace reste en terracotta ; option, format et papier en gris (23/09/2026). */
[class*="wc-block-components-product-details__texte-personnalis"],
[class*="wc-block-components-product-details__texte-personnalis"] .wc-block-components-product-details__name,
[class*="wc-block-components-product-details__texte-personnalis"] .wc-block-components-product-details__value {
    color: var(--rda-terracotta) !important;
}
/* Pas d'écart entre la liste « Dédicace / Option » et la liste « Format / Papier » :
   WooCommerce espace de 4 px les blocs de métadonnées. */
.wc-block-components-product-metadata { gap: 0 !important; }
.wc-block-components-product-details__name { font-weight: 700 !important; }
/* Option « Affiche sans texte » sur sa propre ligne, sous la dédicace. WooCommerce
   enchaîne les entrées sur une ligne avec un « / » placé à la fin de l'entrée
   précédente : on le masque et on passe l'option en bloc. */
.wc-block-components-product-details__option { display: block !important; }
[class*="wc-block-components-product-details__texte-personnalis"] > span[aria-hidden="true"] { display: none !important; }

/* === Radio buttons (shipping methods, payment methods) === */
.wc-block-components-radio-control__option,
.wc-block-components-payment-method-label {
    font-family: 'EB Garamond', serif !important;
    font-size: 15px !important;
    color: var(--rda-navy) !important;
}
.wc-block-components-radio-control__input,
.wc-block-components-checkbox__input,
input[type="radio"]:not([disabled]) {
    accent-color: var(--rda-terracotta);
}

/* === Notices (warning / info) === */
.wc-block-components-notice-banner {
    border-radius: 0 !important;
    font-family: 'EB Garamond', serif !important;
    font-size: 15px !important;
    border-left: 3px solid var(--rda-terracotta) !important;
}
.wc-block-components-notice-banner.is-warning {
    background: rgba(204, 102, 51, 0.05) !important;
    color: var(--rda-navy) !important;
}

/* === Address form layout === */
.wc-block-components-address-form,
.wc-block-components-checkout-step__content {
    margin-top: 12px;
}

/* === "Use shipping as billing" checkbox === */
.wc-block-checkout__use-address-for-billing,
.wc-block-components-checkout-step__container > .wc-block-components-checkbox {
    margin: 14px 0;
}

/* === Coupon : LIEN "Ajouter des codes promo" (texte terracotta, pas un bouton plein) === */
.wc-block-components-totals-coupon-link {
    font-family: 'Jost', sans-serif !important;
    font-size: 14px !important;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: var(--rda-terracotta) !important;
    text-decoration: none !important;
}
.wc-block-components-totals-coupon-link:hover {
    color: var(--rda-navy) !important;
}
/* === Coupon : BOUTON "Appliquer" (fond terracotta, texte crème, hover navy) === */
.wc-block-components-totals-coupon button.wc-block-components-button {
    background: var(--rda-terracotta) !important;
    color: var(--rda-creme) !important;
    border: 0 !important;
    border-radius: 0 !important;
    font-family: 'Jost', sans-serif !important;
    text-transform: uppercase !important;
    letter-spacing: 0.1em !important;
    font-size: 14px !important;
    font-weight: 500 !important;
    text-decoration: none !important;
    transition: background-color 0.3s ease !important;
}
.wc-block-components-totals-coupon button.wc-block-components-button:hover {
    background: var(--rda-navy) !important;
    color: var(--rda-creme) !important;
}
/* le span interne hérite la couleur crème (sinon WC peut le forcer) */
.wc-block-components-totals-coupon button.wc-block-components-button .wc-block-components-button__text {
    color: var(--rda-creme) !important;
}

/* === Express payment block — masque si vide === */
.wp-block-woocommerce-cart-express-payment-block:empty,
.wp-block-woocommerce-checkout-express-payment-block:empty {
    display: none;
}

/* === Terms + place order spacing === */
.wc-block-components-checkout-place-order-button {
    width: 100% !important;
    margin-top: 12px;
}

/* === FIX BANNIÈRE LOGIN — refresh style avec selectors plus forts === */
.rda-checkout-login-banner * {
    box-sizing: border-box;
}
.rda-checkout-login-banner .rda-checkout-login-toggle {
    display: block;
    background: rgba(204, 102, 51, 0.06) !important;
    border-left: 3px solid var(--rda-terracotta) !important;
    margin: 0 0 24px;
}
.rda-checkout-login-banner summary {
    list-style: none;
    cursor: pointer;
    padding: 14px 20px !important;
    font-family: 'Jost', sans-serif !important;
    font-size: 14px !important;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--rda-navy) !important;
    font-weight: 500 !important;
}
.rda-checkout-login-banner summary::-webkit-details-marker,
.rda-checkout-login-banner summary::marker {
    display: none !important;
    content: '' !important;
}
.rda-checkout-login-banner summary::before {
    content: '+';
    display: inline-block;
    margin-right: 10px;
    color: var(--rda-terracotta);
    font-weight: 600;
    width: 14px;
    text-align: center;
    font-size: 18px;
    line-height: 1;
}
.rda-checkout-login-banner details[open] > summary::before {
    content: '−';
}
.rda-checkout-login-banner summary span strong {
    color: var(--rda-terracotta) !important;
    font-weight: 600 !important;
    text-decoration: underline;
    text-underline-offset: 3px;
    margin-left: 4px;
}

/* ========================================
   49. FOCUS CLAVIER — un seul anneau, partout
   ========================================

   Neuf regles « outline: none » traînaient dans cette feuille, plus deux classes
   « focus:outline-none » dans les gabarits, heritees d'une epoque ou l'on masquait le
   contour du navigateur sans rien mettre a la place. Resultat : une personne qui navigue
   au clavier ne voyait pas ou elle se trouvait, y compris sur le bouton d'achat, l'action
   principale de la fiche produit. WCAG 2.4.7, niveau AA.

   L'anneau reprend celui qui existait deja sur les vignettes de papier : contour
   terracotta et halo a 15 %. Le « !important » est necessaire pour passer devant les deux
   « outline: none !important » restants. « :focus-visible » et non « :focus » : rien ne
   s'affiche au clic a la souris, seulement au clavier. */
a:focus-visible,
button:focus-visible,
[role="button"]:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
summary:focus-visible,
[tabindex]:not([tabindex="-1"]):focus-visible {
    outline: 2px solid var(--rda-terracotta) !important;
    outline-offset: 2px !important;
    box-shadow: 0 0 0 2px rgba(var(--rda-terracotta-rgb), 0.15) !important;
}
/* Le lien d'evitement se pose par-dessus le contenu : son anneau ne doit pas deborder
   du bandeau qu'il dessine. */
.skip-link:focus-visible,
a.sr-only:focus-visible {
    outline-offset: -2px !important;
}

/* ========================================
   51. SURFACES DU NAVIGATEUR
   ========================================

   Tout ce que le navigateur dessine a notre place et que personne ne pense a habiller :
   la surbrillance de selection, le curseur de saisie, la barre de defilement, le
   soulignement des liens, les chiffres des colonnes de prix. Livres tels quels, ils
   arrivent avec les reglages du systeme d'exploitation, bleu de Windows compris, et
   trahissent une page assemblee plutot que dessinee. Ils appartiennent au meme monde
   que le reste : papier creme, encre bleu nuit, terracotta pour ce qui se decide. */

/* La SELECTION est deja habillee, et pas ici : le <body> porte les utilitaires
   « selection:bg-terracotta selection:text-creme » (voir header.php). Terracotta plein,
   texte creme. Ne pas en ajouter une seconde ici : elle ferait doublon, perdrait en
   specificite face a l'utilitaire, et laisserait deux traitements concurrents dans la
   feuille. */

/* Curseur de saisie : la couleur de ce qui se decide, la ou l'on ecrit. */
input,
textarea,
select,
[contenteditable] {
    caret-color: var(--rda-terracotta);
}

/* Cases a cocher et boutons radio natifs : le navigateur les peint en bleu systeme. */
input[type="checkbox"],
input[type="radio"],
progress,
input[type="range"] {
    accent-color: var(--rda-terracotta);
}

/* Barre de defilement : filet d'encre sur fond papier, a angles vifs comme le reste du
   systeme. Firefox et les navigateurs WebKit ne parlent pas la meme langue. */
html {
    scrollbar-color: rgba(var(--rda-navy-rgb), 0.35) var(--rda-creme);
    scrollbar-width: thin;
}
::-webkit-scrollbar {
    width: 10px;
    height: 10px;
}
::-webkit-scrollbar-track {
    background: var(--rda-creme);
}
::-webkit-scrollbar-thumb {
    background: rgba(var(--rda-navy-rgb), 0.3);
    border-radius: 0;
    border: 3px solid var(--rda-creme);
}
::-webkit-scrollbar-thumb:hover {
    background: rgba(var(--rda-navy-rgb), 0.55);
}

/* Soulignement des liens de contenu : le trait par defaut colle aux jambages du
   Garamond. On le descend et on l'affine. */
.rda-legal-page a,
.woocommerce-product-details__short-description a,
.woocommerce-Tabs-panel a,
.rda-product-summary a:not(.button):not([class*="btn"]) {
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
}

/* Chiffres a chasse fixe partout ou des montants se lisent en colonne : prix, totaux,
   quantites. Sans cela le 1 est plus etroit que le 8 et les virgules se decalent d'une
   ligne a l'autre. */
.price,
.woocommerce-Price-amount,
.wc-block-components-totals-item__value,
.wc-block-formatted-money-amount,
.wc-block-components-product-price,
.order-total,
.cart-subtotal,
.rda-papier-price,
.quantity input,
.wc-block-components-quantity-selector__input {
    font-variant-numeric: tabular-nums;
    font-feature-settings: "tnum" 1;
}

/* ========================================
   50. BOUTONS SUR DEUX LIGNES
   ========================================

   Les libelles longs passent a la ligne sur les petits ecrans, « Choisir une option »
   en tete. L'interligne heritee du corps de texte, 1,5, ecartait alors les deux lignes
   comme un paragraphe : le bouton montait a 62 px de haut et son texte flottait. Les
   capitales espacees de Jost n'ont pas besoin de cet air, une interligne pleine suffit.
   Le centrage est explicite : les boutons rendus en <a> par WooCommerce ne l'heritent
   pas toujours. */
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.woocommerce a.added_to_cart,
.add_to_cart_button,
.single_add_to_cart_button,
.checkout-button,
.wc-block-components-button,
.wc-block-cart__submit-button,
.btn-lux {
    line-height: 1 !important;
    text-align: center;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
/* La grille de la boutique aligne ses boutons en bas de carte : ils doivent rester
   pleine largeur meme en flex. */
.products li.product .add_to_cart_button,
.products li.product a.button {
    width: 100%;
}

/* Marge interieure verticale des boutons de la boutique, « Choisir une option » en
   tete. Dix pixels : de quoi laisser respirer un libelle qui passe sur deux lignes,
   sans retrouver l'enflure de l'interligne 1,5. */
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.add_to_cart_button {
    padding-top: 10px;
    padding-bottom: 10px;
    /* Hauteur plancher : un libelle court comme « Ajouter au panier » ne doit pas
       donner un bouton deux fois plus bas que « Choisir une option », qui passe sur
       deux lignes. */
    min-height: 40px;
}
button.wc-block-cart__submit-button,
a.wc-block-cart__submit-button,
button.wc-block-components-checkout-place-order-button,
.wc-block-cart__submit-container .wc-block-components-button {
    padding-top: 21px !important;
    padding-bottom: 21px !important;
}

/* Le prix de la fiche produit porte 24 px de marge basse, pour respirer avant le
   selecteur de format. Mais la regle attrape aussi les prix des cartes de produits
   similaires, qui vivent dans la meme fiche : le bouton y tombait 34 px sous le prix
   au lieu de 10. On la neutralise dans les grilles. */
.rda-single-product .products li.product p.price,
.rda-single-product .products li.product span.price {
    margin-bottom: 0;
}

/* Marge au-dessus du bouton, dans toutes les grilles : boutique, accueil, produits
   similaires et ventes additionnelles. Le « !important » repond a celui d'une regle
   plus haute dans la feuille, qui posait six pixels. */
.woocommerce ul.products li.product .button,
.rda-home-grid ul.products li.product .button,
.related.products ul.products li.product .button,
.upsells.products ul.products li.product .button,
.products li.product .add_to_cart_button,
.products li.product a.button {
    margin-top: 10px !important;
}

/* ========================================
   49. PAGE DE COMMANDE : blocs WooCommerce ramenes a la charte
   ⚠️ Ces blocs sont rendus par React apres le chargement et reconstruits a chaque
   etape : on ne peut pas les habiller cote PHP, seul le CSS tient. D'ou les
   « !important », les styles des blocs etant charges apres la feuille du theme.
   ======================================== */

/* Mention de consentement : meme habillage que la case RGPD du formulaire de contact
   (EB Garamond, corps du texte courant), au lieu du Jost 12px des blocs. */
.wc-block-checkout__terms .wc-block-components-checkbox__label,
.wc-block-checkout__terms .wc-block-components-checkbox__label a {
    font-family: 'EB Garamond', serif !important;
    font-size: 16px !important;
    line-height: 1.4 !important;
    color: rgba(var(--rda-navy-rgb), 0.7) !important;
    /* ⚠️ Remettre casse et interlettrage a zero : une regle du theme met les libelles
       des blocs WooCommerce en capitales espacees, et changer la police ne suffisait
       pas a l'annuler. C'est une phrase courante, pas un intitule. */
    text-transform: none !important;
    letter-spacing: normal !important;
}
.wc-block-checkout__terms .wc-block-components-checkbox__label a {
    color: inherit;
    text-decoration: underline;
    transition: color 0.2s ease;
}
.wc-block-checkout__terms .wc-block-components-checkbox__label a:hover,
.wc-block-checkout__terms .wc-block-components-checkbox__label a:focus-visible {
    color: var(--rda-terracotta);
}

/* Corps de texte des blocs a 14 px. Les regles du theme ont ete relevees une a une,
   mais ces elements-la tiennent leur taille de la feuille de WooCommerce Blocks, qui
   se charge apres : il faut la reprendre ici. */
.wc-block-checkout__guest-checkout-notice,
.wc-block-checkout__login-prompt,
.wc-block-components-address-card,
.wc-block-components-address-card__address-section,
.wc-block-components-address-card__edit,
.wc-block-components-address-form__address_2-toggle,
.wc-block-components-express-payment-continue-rule,
.wc-block-components-express-payment__title,
.wc-block-components-shipping-rates-control__no-shipping-address-message,
.wc-block-components-formatted-money-amount,
.wc-block-formatted-money-amount,
.wp-block-woocommerce-cart-order-summary-heading-block,
.wc-block-cart-items__header,
.wc-block-cart-items__header span {
    font-size: 14px !important;
}

/* Moyens de paiement : angles vifs, comme tout le reste du site. */
.wc-block-components-radio-control,
.wc-block-components-radio-control__option,
.wc-block-components-radio-control-accordion-option,
.wc-block-components-radio-control-accordion-content,
.wc-block-checkout__payment-method .wc-block-components-panel {
    border-radius: 0 !important;
}

/* Pages editoriales (contact) : meme charte que les pages legales, sans le filet
   qui les fait ressembler a un document administratif. Sous-titres terracotta,
   texte bleu nuit, liens soulignes qui basculent au bleu nuit au survol. */
.rda-page-editorial {
    color: rgba(var(--rda-navy-rgb), 0.85);
}
.rda-page-editorial h2 {
    color: var(--rda-navy);
    font-size: 26px;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    line-height: 1.25em;
    /* Marge haute genereuse : c'est elle qui separe les sections, a defaut de filet. */
    margin: 56px 0 18px;
}
.rda-page-editorial h2:first-child { margin-top: 0; }
.rda-page-editorial p { margin: 0 0 22px; }
.rda-page-editorial p:last-child { margin-bottom: 0; }
/* Liens : le trait est plein au repos et se retire vers la droite au survol.
   Il est porte par un pseudo-element et non par une bordure, car seule une largeur
   s'anime : une bordure ne saurait que s'allumer ou s'eteindre d'un coup. */
.rda-page-editorial a {
    position: relative;
    display: inline-block;
    color: var(--rda-terracotta);
    text-decoration: none;
    /* Interligne resserre sur le lien seul : sans cela le trait se pose au bas de la
       ligne de 1.35em, loin sous les jambages. */
    line-height: 1.12;
    padding-bottom: 0;
    transition: color 0.3s var(--rda-transition-lux);
}
.rda-page-editorial a::after {
    content: '';
    position: absolute;
    /* Ancre a DROITE : en retrecissant, c'est le bord gauche qui avance, donc le
       trait s'efface vers la droite. Ancre a gauche, il s'effacerait vers la gauche. */
    right: 0;
    bottom: -1px;
    width: 100%;
    height: 1px;
    background-color: currentColor;
    transition: width 0.4s var(--rda-transition-lux);
}
.rda-page-editorial a:hover {
    color: var(--rda-navy);
}
.rda-page-editorial a:hover::after {
    width: 0;
}
@media (prefers-reduced-motion: reduce) {
    .rda-page-editorial a::after { transition: none; }
}
@media (max-width: 640px) {
    .rda-page-editorial h2 { font-size: 22px; margin-top: 40px; }
}


/* Echec d'envoi du formulaire de contact. Discret mais lisible : c'est le seul
   moment ou le visiteur doit comprendre que son message n'est pas parti. */
.rda-contact-erreur {
    margin-top: 18px;
    font-family: 'Jost', sans-serif;
    font-size: 14px;
    letter-spacing: 0.04em;
    color: var(--rda-terracotta);
    text-align: center;
}


/* Champ piege du formulaire : hors ecran plutot que display:none, certains robots
   ignorant les champs masques de cette facon. */
.rda-piege {
    position: absolute !important;
    left: -9999px !important;
    width: 1px;
    height: 1px;
    overflow: hidden;
}


/* ========================================
   FORMULAIRE DE CONTACT (CONTACT FORM 7)
   ========================================
   Contact Form 7 pose son propre balisage : chaque ligne est enveloppee dans un <p>
   et chaque case dans un <span class="wpcf7-list-item">. Les classes utilitaires que
   portait l'ancien formulaire code en dur (espacement, couleur et casse du bouton)
   ne s'appliquent donc plus. On les retablit ici, en CSS, pour que l'habillage tienne
   meme si le formulaire est reedite depuis l'administration. */

/* Espacement vertical. ⚠️ Ne PAS compter sur les marges des paragraphes : une regle
   du theme les remet a zero et gagne la cascade. On empile donc les blocs en colonne
   avec un ecart, ce qui reproduit le space-y-10 de l'ancien formulaire sans dependre
   d'aucune marge. */
.rda-atelier-form-wrap .wpcf7-form {
    display: flex;
    flex-direction: column;
    gap: 24px;
}
/* Le paragraphe vide que CF7 laisse parfois en fin de formulaire creerait un ecart
   de plus au bas du bloc. */
.rda-atelier-form-wrap .wpcf7-form > p:empty { display: none; }

/* Les deux champs du haut restent cote a cote sur large ecran. */
.rda-atelier-form-wrap .wpcf7-form .grid { margin: 0; }

/* ⚠️ CF7 applique margin-left:1em a chaque .wpcf7-list-item : c'est ce qui decalait
   les cases a cocher vers la droite. On l'annule et on aligne la case sur la premiere
   ligne du libelle plutot que sur son milieu. */
.rda-atelier-form-wrap .wpcf7-form .wpcf7-list-item {
    margin: 0;
    display: block;
}
.rda-cf7-case .wpcf7-list-item label {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    cursor: pointer;
}
.rda-cf7-case input[type="checkbox"] {
    flex: 0 0 auto;
    width: 20px;
    height: 20px;
    margin-top: 4px;
    accent-color: var(--rda-terracotta);
    cursor: pointer;
}
.rda-cf7-case .wpcf7-list-item-label {
    font-family: 'EB Garamond', serif;
    font-size: 16px;
    line-height: 1.45;
    color: rgba(var(--rda-navy-rgb), 0.7);
}
.rda-cf7-case a {
    color: inherit;
    text-decoration: underline;
    text-underline-offset: 3px;
}
.rda-cf7-case a:hover { color: var(--rda-terracotta); }
.rda-cf7-case strong { color: var(--rda-navy); font-weight: 400; }

/* La legende des champs obligatoires. */
.rda-cf7-legende {
    font-family: 'Jost', sans-serif;
    font-size: 12px;
    letter-spacing: 0.06em;
    color: rgba(var(--rda-navy-rgb), 0.45);
}

/* Le bouton. CF7 ne reprend pas les classes utilitaires : fond, couleur, police,
   casse et remplissage etaient tous perdus, seul le voile anime subsistait. */
.rda-atelier-form-wrap .rda-cf7-envoi {
    /* ⚠️ Effet de rideau par DEGRADE, et non par ::before comme les autres boutons du
       site : Contact Form 7 rend le bouton en <input type="submit">, un element
       remplace, sur lequel les pseudo-elements ne s'affichent pas. Le voile de
       .btn-lux ne pouvait donc jamais apparaitre ici. Un fond de degrade dont on
       anime la largeur produit le meme balayage, et fonctionne sur un input. */
    background-color: var(--rda-terracotta);
    background-image: linear-gradient(to right, var(--rda-navy), var(--rda-navy));
    background-repeat: no-repeat;
    background-position: left center;
    background-size: 0% 100%;
    color: var(--rda-creme);
    font-family: 'Jost', sans-serif;
    font-size: 14px;
    text-transform: uppercase;
    letter-spacing: 0.2em;
    padding: 20px 48px;
    border: none;
    border-radius: 0;
    cursor: pointer;
    width: 100%;
    transition: background-size 0.5s var(--rda-transition-lux),
                color 0.5s var(--rda-transition-lux);
}
@media (min-width: 768px) {
    .rda-atelier-form-wrap .rda-cf7-envoi { width: auto; }
}
.rda-atelier-form-wrap .rda-cf7-envoi:hover {
    background-size: 100% 100%;
    color: var(--rda-creme);
}

/* Messages de validation et reponse, accordes a la charte plutot qu'au rouge et au
   vert par defaut de l'extension. */
.rda-atelier-form-wrap .wpcf7-not-valid-tip {
    font-family: 'Jost', sans-serif;
    font-size: 12px;
    letter-spacing: 0.04em;
    color: var(--rda-terracotta);
    margin-top: 8px;
}
/* Reponse du formulaire. ⚠️ Le selecteur porte « .wpcf7 form » parce que la feuille
   de l'extension cible ainsi, avec un element de plus que nous : a spécificite egale
   elle l'emportait, et sa bordure bleue de 2 px restait affichee.
   ⚠️ Pas de cadre ni de fond : l'ancien message de succes
   etait deux lignes centrees en 22 px, sans encadre, et c'est cet habillage qu'on
   conserve. Le cadre par defaut de l'extension faisait une boite administrative au
   milieu d'un bloc entierement compose en serif. */
.rda-atelier-form-wrap .wpcf7 form .wpcf7-response-output {
    font-family: 'EB Garamond', serif;
    font-size: 22px;
    line-height: 1.3em;
    text-align: center;
    border: none;
    padding: 0;
    margin: 24px 0 0;
    color: var(--rda-navy);
}
/* Succes : terracotta, comme la premiere ligne de l'ancien message. */
.rda-atelier-form-wrap .wpcf7 form.wpcf7-form.sent .wpcf7-response-output {
    color: var(--rda-terracotta);
    font-weight: 500;
}
/* Echec et refus : on garde le bleu nuit, plus sobre qu'un rouge d'alerte. */
.rda-atelier-form-wrap .wpcf7 form.wpcf7-form.failed .wpcf7-response-output,
.rda-atelier-form-wrap .wpcf7 form.wpcf7-form.aborted .wpcf7-response-output,
.rda-atelier-form-wrap .wpcf7 form.wpcf7-form.spam .wpcf7-response-output,
.rda-atelier-form-wrap .wpcf7 form.wpcf7-form.invalid .wpcf7-response-output {
    color: rgba(var(--rda-navy-rgb), 0.75);
    font-size: 18px;
}


/* Bouton d'envoi inactif tant qu'un champ obligatoire manque. L'attribut « disabled »
   n'est pas employe : un bouton desactive ne recoit ni le focus ni le survol, et le
   visiteur ne comprend pas ce qui lui manque. On le grise, on coupe le voile anime, et
   la soumission reste possible pour que le navigateur affiche ses propres messages
   sur le premier champ fautif. */
.rda-atelier-form-wrap .rda-cf7-envoi.rda-inactif,
.rda-atelier-form-wrap .rda-cf7-envoi.rda-inactif:hover {
    background-color: rgba(var(--rda-navy-rgb), 0.18);
    background-image: none;
    color: rgba(var(--rda-navy-rgb), 0.45);
    cursor: not-allowed;
}
.rda-atelier-form-wrap .rda-cf7-envoi.rda-inactif::before { display: none; }

/* Envoi en cours : le bouton porte « disabled » (pose par custom.js) le temps de la
   requete. Meme gris que l'etat inactif, sans voile anime, avec un curseur d'attente. */
.rda-atelier-form-wrap .rda-cf7-envoi:disabled,
.rda-atelier-form-wrap .rda-cf7-envoi:disabled:hover {
    background-color: rgba(var(--rda-navy-rgb), 0.18);
    background-image: none;
    color: rgba(var(--rda-navy-rgb), 0.45);
    cursor: progress;
}

/* Message envoye : le formulaire s'efface et le bloc se replie a 300 px, puis le
   message apparait au centre. Enchainement pilote par custom.js, en deux temps :
   1. « rda-repli » : hauteur figee puis animee vers la cible, champs en fondu ;
   2. « rda-replie » : champs retires du flux, message en fondu au milieu.
   ⚠️ Le message est un enfant DIRECT du <form> : on agit sur ses freres, pas sur le
   formulaire lui-meme. CF7 ne quitte l'etat « sent » qu'a un nouvel envoi,
   impossible une fois les champs caches : l'etat tient jusqu'au rechargement. */
.rda-atelier-form-wrap .wpcf7 form.wpcf7-form.rda-repli {
    overflow: hidden;
    transition: height 0.6s ease-in-out;
}
.rda-atelier-form-wrap .wpcf7 form.wpcf7-form.rda-repli > * {
    transition: opacity 0.6s ease-in-out;
    opacity: 0;
}
/* Pendant le repli, le message que CF7 vient d'afficher en bas est sorti du flux et
   masque sans transition : sinon il grandissait le bloc de 19 px au premier instant
   et s'effacait en fondu avant meme d'etre lu. */
.rda-atelier-form-wrap .wpcf7 form.wpcf7-form.rda-repli .wpcf7-response-output {
    position: absolute;
    left: 0;
    right: 0;
    opacity: 0;
    transition: none;
}
.rda-atelier-form-wrap .wpcf7 form.wpcf7-form.rda-replie {
    justify-content: center;
}
.rda-atelier-form-wrap .wpcf7 form.wpcf7-form.rda-replie > :not(.wpcf7-response-output) {
    display: none;
}
.rda-atelier-form-wrap .wpcf7 form.wpcf7-form.rda-replie .wpcf7-response-output {
    position: static;
    margin: 0;
    opacity: 1;
    transition: opacity 0.6s ease-in-out;
}
@media (prefers-reduced-motion: reduce) {
    .rda-atelier-form-wrap .wpcf7 form.wpcf7-form.rda-repli,
    .rda-atelier-form-wrap .wpcf7 form.wpcf7-form.rda-repli > *,
    .rda-atelier-form-wrap .wpcf7 form.wpcf7-form.rda-replie .wpcf7-response-output { transition: none; }
}

/* Titres des vignettes produit sur mobile : interligne resserre.
   A 16 px, l'interligne herite valait 24 px, soit 1,5em, et un titre sur deux lignes
   prenait 48 px de haut dans une carte deja etroite. En ecran large la respiration
   reste souhaitable, la regle est donc bornee au mobile. */
@media (max-width: 768px) {
    .woocommerce ul.products li.product .woocommerce-loop-product__title,
    .rda-home-grid ul.products li.product .woocommerce-loop-product__title,
    .rda-shop-content ul.products li.product .woocommerce-loop-product__title {
        line-height: 1.3em;
        /* Remonte de 5 px : la marge valait 12 px. ⚠️ « !important » est necessaire,
           la regle d'origine en porte un et l'emporterait malgre sa position anterieure. */
        margin-top: 7px !important;
    }
}

/* ========================================
   Panneau du panier : option « Affiche sans texte » sous la dédicace (23/09/2026)
   Affichée par rda_cart_item_name_clean, au même endroit que la dédicace et les
   caractéristiques du produit. Libellés en gras.
   ======================================== */
#rda-cart-sidebar .woocommerce-mini-cart-item:has(.rda-cart-item-option) {
    grid-template-areas:
        "img title remove"
        "img attrs attrs"
        "img opt   opt"
        "img qty   total";
}
#rda-cart-sidebar .woocommerce-mini-cart-item:has(.rda-cart-item-dedicace):has(.rda-cart-item-option) {
    grid-template-areas:
        "img title remove"
        "img attrs attrs"
        "img dedi  dedi"
        "img opt   opt"
        "img qty   total";
}
#rda-cart-sidebar .woocommerce-mini-cart-item > a:not(.remove) > .rda-cart-item-option {
    grid-area: opt;
    margin: 0;
}
.rda-cart-item-option {
    display: block;
    font-family: 'EB Garamond', serif;
    font-style: italic;
    font-size: 14px;
    line-height: 1.3;
    color: rgba(26, 43, 60, 0.65);
}
.rda-cart-item-dedicace strong,
.rda-cart-item-option strong {
    font-weight: 700;
    color: inherit;
}

/* ========================================
   Totals du panier et du paiement : montant toujours dans la colonne de droite
   (23/09/2026). WooCommerce donne au libellé « flex: 1 1 auto » : un libellé long,
   comme « Cartes postales offertes (×4 · 5 pour le prix de 4) », prenait toute la
   ligne et renvoyait le montant sous lui, calé à gauche. Le libellé rétrécit
   désormais et passe à la ligne à côté du montant ; la description (« Livraison
   classique gratuite… ») garde sa propre ligne.
   ======================================== */
.wc-block-components-totals-item__label {
    flex: 1 1 0 !important;
    min-width: 0;
}
.wc-block-components-totals-item__value {
    flex: 0 1 auto !important;
    max-width: 65%;
    margin-left: auto;
    padding-left: 16px;
    text-align: right;
    align-self: flex-start;
}
/* Un montant ne se coupe jamais ; un texte (« Saisir l'adresse pour procéder au
   calcul ») passe à la ligne au lieu de chevaucher le libellé. */
.wc-block-components-totals-item__value.wc-block-formatted-money-amount,
.wc-block-components-totals-item__value .wc-block-formatted-money-amount {
    white-space: nowrap;
}
.wc-block-components-panel__button {
    font-size: 15px !important;
}
.wc-block-components-totals-item__description {
    flex: 0 0 100% !important;
}

/* ========================================
   Pastille du panier (23/09/2026) : le lien du menu transmet un espacement de
   lettres de 0,21 em, qui écartait « 22 » et le décalait vers la gauche (l'espace
   s'ajoute aussi après le dernier chiffre). À deux chiffres, la pastille s'élargit
   en gélule au lieu de serrer les chiffres dans 18 px.
   ======================================== */
.rda-cart-count.cart-count {
    letter-spacing: 0;
    text-indent: 0;
    font-variant-numeric: tabular-nums;
    box-sizing: border-box;
    width: auto;
    min-width: 18px;
    padding: 0 4px;
    border-radius: 9px;
}

/* ========================================
   Lisibilité du panier, du paiement et du panneau (23/09/2026)
   Échelle : 13 px libellés en capitales, 15-16 px texte, 20 px total.
   - Garamond : petites minuscules, 14 px paraissait plus petit que Jost 14 :
     16 px dans le panier, 15 px dans les colonnes étroites (récapitulatif du
     paiement, panneau), où 16 px ferait passer « Format / Papier » sur 3 lignes.
   - Sélecteur de quantité : 24 px de haut, boutons de 22 px, sous le minimum de
     24 px de WCAG 2.2 ; chiffre à 13 px, qui fait zoomer Safari sur iPhone (tout
     champ sous 16 px). Passage à 40 px, 44 px au doigt, chiffre à 16 px.
   ======================================== */

/* Nom du produit (CarlaSans) */
.wp-block-woocommerce-cart .wc-block-components-product-name,
.wp-block-woocommerce-checkout .wc-block-components-product-name {
    font-size: 16px !important;
}

/* Format, papier, dédicace, option (Garamond italique) */
.wp-block-woocommerce-cart .wc-block-components-product-details,
.wp-block-woocommerce-cart .wc-block-components-product-details__name,
.wp-block-woocommerce-cart .wc-block-components-product-details__value {
    font-size: 16px !important;
}
.wp-block-woocommerce-checkout .wc-block-components-product-details,
.wp-block-woocommerce-checkout .wc-block-components-product-details__name,
.wp-block-woocommerce-checkout .wc-block-components-product-details__value {
    font-size: 15px !important;
}
#rda-cart-sidebar .rda-cart-item-attrs,
#rda-cart-sidebar .rda-cart-item-dedicace,
#rda-cart-sidebar .rda-cart-item-option {
    font-size: 15px;
}

/* Prix unitaire et total de ligne (Jost) */
.wp-block-woocommerce-cart .wc-block-cart-item__prices,
.wp-block-woocommerce-cart .wc-block-cart-item__prices .wc-block-formatted-money-amount,
.wp-block-woocommerce-cart .wc-block-cart-item__total .wc-block-components-product-price__value {
    font-size: 16px !important;
}

/* Totaux : libellés en capitales à 13 px, montants à 16 px (le total reste à 20 px) */
.wc-block-components-totals-item__label {
    font-size: 13px !important;
}
.wc-block-components-totals-item__value {
    font-size: 16px !important;
}
.wc-block-components-totals-footer-item .wc-block-components-totals-item__value {
    font-size: 20px !important;
}
.wc-block-components-totals-footer-item .wc-block-components-totals-item__label {
    font-size: 14px !important;
}
.wc-block-components-totals-item__description,
.wc-block-components-totals-item__description *,
.wc-block-components-totals-footer-item-tax,
.wc-block-components-totals-footer-item-tax * {
    font-size: 13px !important;
    line-height: 1.4;
}

/* Sélecteur de quantité (largeur libre : WooCommerce la fixe à 107 px, ce qui
   coupait le « + » avec des boutons de 40 px) */
.wc-block-components-quantity-selector {
    height: 40px !important;
    min-height: 40px;
    width: auto !important;
    min-width: 0 !important;
}
.wc-block-components-quantity-selector__input {
    width: 44px !important;
    min-width: 44px !important;
}
.wc-block-components-quantity-selector__button {
    width: 40px !important;
    min-width: 40px !important;
    height: 38px !important;
    font-size: 18px !important;
    line-height: 1 !important;
}
.wc-block-components-quantity-selector__input {
    height: 38px !important;
    font-family: 'Jost', sans-serif !important;
    font-size: 16px !important;
    font-variant-numeric: tabular-nums;
}
@media (pointer: coarse) {
    .wc-block-components-quantity-selector { height: 44px !important; min-height: 44px; }
    .wc-block-components-quantity-selector__button { width: 44px !important; min-width: 44px !important; height: 42px !important; }
    .wc-block-components-quantity-selector__input { height: 42px !important; }
}
/* Téléphone : à 134 px de large, le sélecteur faisait déborder le tableau des
   articles de 19 px. On garde 44 px de haut (la dimension utile au doigt) et on
   rétrécit la largeur des boutons. */
@media (max-width: 480px) {
    .wc-block-components-quantity-selector__button { width: 36px !important; min-width: 36px !important; }
    .wc-block-components-quantity-selector__input { width: 40px !important; min-width: 40px !important; }
}

/* Montant du total estimé : une règle groupée plus haut (avis invité, carte
   d'adresse…) fixe « .wc-block-components-totals-footer-item-tax-value » à 14 px,
   ce qui annulait les 20 px du total (23/09/2026). */
.wc-block-components-totals-footer-item .wc-block-components-totals-footer-item-tax-value {
    font-size: 20px !important;
}

/* En-tête « Produit / Total » du panier : même police que « Total panier »
   (CarlaSans 14 px, capitales, 500), au lieu de Garamond. */
.wc-block-cart-items__header th,
.wc-block-cart-items__header th span:not(.screen-reader-text) {
    font-family: 'CarlaSans', sans-serif !important;
    font-size: 14px !important;
    font-weight: 500 !important;
    font-style: normal !important;
    text-transform: uppercase !important;
    letter-spacing: normal !important;
    color: var(--rda-navy) !important;
}

/* Espace au-dessus du sélecteur de quantité : 4 px → 16 px (23/09/2026). */
.wc-block-cart-item__quantity {
    margin-top: 12px !important;
}

/* ========================================
   Formulaire de paiement (coordonnées, livraison, facturation, options de
   livraison et de paiement) : même échelle que le panier (23/09/2026).
   Garamond 14 → 16 px, libellés Jost 12 → 13 px, prix de livraison 16 px.
   Les champs de saisie étaient déjà à 16 px.
   ======================================== */
.wc-block-checkout__main .wc-block-components-express-payment-continue-rule,
.wc-block-checkout__main .wc-block-checkout__login-prompt,
.wc-block-checkout__main .wc-block-checkout__guest-checkout-notice,
.wc-block-checkout__main .wc-block-components-address-card,
.wc-block-checkout__main .wc-block-components-address-card *,
.wc-block-checkout__main .wc-block-components-address-form__address_2-toggle,
.wc-block-checkout__main .wc-block-components-checkout-step__description,
.wc-block-checkout__main .wc-block-components-shipping-rates-control__no-results-notice,
.wc-block-checkout__main .wc-block-components-notice-banner__content,
.wc-block-checkout__main .wc-block-components-radio-control__description,
.wc-block-checkout__main .wc-block-components-radio-control__secondary-description,
.wc-block-checkout__main .wc-block-components-validation-error {
    font-size: 16px !important;
}
.wc-block-checkout__main .wc-block-components-text-input label,
.wc-block-checkout__main .wc-blocks-components-select__label,
.wc-block-checkout__main .wc-block-components-checkbox__label,
.wc-block-checkout__main .wc-block-components-radio-control__label {
    font-size: 13px !important;
}
.wc-block-checkout__main .wc-block-components-radio-control__secondary-label,
.wc-block-checkout__main .wc-block-components-radio-control__secondary-label .wc-block-formatted-money-amount,
.wc-block-checkout__main .wc-block-components-radio-control .wc-block-formatted-money-amount {
    font-size: 16px !important;
}

/* Mention des conditions sous le bouton Commander : c'est techniquement un libellé
   de case, que la règle à 13 px ci-dessus rapetissait alors que ses liens restaient
   à 16 px. Toute la phrase revient à 16 px. */
.wc-block-checkout__main .wc-block-checkout__terms .wc-block-components-checkbox__label,
.wc-block-checkout__main .wc-block-checkout__terms .wc-block-components-checkbox__label a {
    font-size: 16px !important;
}

/* Récapitulatif collant du paiement : WooCommerce le colle à 24 px du haut, sous
   l'en-tête fixe du site (112 px de haut à toutes les largeurs où il colle) qui en
   cachait le haut. 112 + 24 = 136 px (23/09/2026). */
@media (min-width: 700px) {
    .wc-block-checkout__sidebar,
    .wc-block-cart__sidebar {
        top: 136px !important;
    }
}

/* Barre « Résumé de la commande » (paiement, mobile et colonne de droite) : même
   traitement que « Total panier » pour le titre, et que le total estimé pour le
   montant, suffixe TTC compris. Le suffixe n'était posé que sur le total du bas du
   récapitulatif ; ce montant-ci est un autre élément (23/09/2026). */
.wc-block-components-checkout-order-summary__title-text {
    font-family: 'CarlaSans', sans-serif !important;
    font-size: 14px !important;
    font-weight: 500 !important;
    font-style: normal !important;
    text-transform: uppercase !important;
    letter-spacing: normal !important;
    color: var(--rda-navy) !important;
}
.wc-block-components-checkout-order-summary__title-price {
    font-family: 'Jost', sans-serif !important;
    font-size: 20px !important;
    font-weight: 600 !important;
    color: var(--rda-terracotta) !important;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}
.wc-block-components-checkout-order-summary__title-price::after {
    content: ' TTC';
    font-family: 'Jost', sans-serif;
    font-size: 11px;
    font-weight: 400;
    color: rgba(195, 106, 77, 0.75);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    margin-left: 4px;
    vertical-align: middle;
    position: relative;
    top: -2px;
}

/* ========================================
   Listes d'options à cocher (livraison, paiement) : coins carrés et une seule
   ligne autour de l'option choisie (23/09/2026).
   WooCommerce dessine le cadre extérieur avec un pseudo-élément arrondi à 4 px
   posé PAR-DESSUS les options, plus un séparateur gris en haut de chaque option ;
   l'option choisie reçoit un trait intérieur de 1,5 px. Le cadre gris recouvrait
   le bord de ce trait : d'où la double ligne grise et noire, et des coins
   arrondis autour d'une sélection carrée.
   Ici : plus de cadre commun ni de séparateurs ; chaque option porte sa propre
   bordure (les bordures voisines se superposent d'1 px), l'option choisie passe
   au-dessus avec un seul trait bleu nuit.
   ======================================== */
.wc-block-components-radio-control--highlight-checked::after {
    border: 0 !important;
    border-radius: 0 !important;
    box-shadow: none !important;
}
.wc-block-components-radio-control--highlight-checked .wc-block-components-radio-control__option::after {
    display: none !important;
}
.wc-block-components-radio-control--highlight-checked .wc-block-components-radio-control__option {
    border-radius: 0 !important;
    box-shadow: inset 0 0 0 1px rgba(26, 43, 60, 0.2) !important;
    position: relative;
}
.wc-block-components-radio-control--highlight-checked .wc-block-components-radio-control__option + .wc-block-components-radio-control__option {
    margin-top: -1px !important;
}
.wc-block-components-radio-control--highlight-checked .wc-block-components-radio-control__option.wc-block-components-radio-control__option-checked {
    box-shadow: inset 0 0 0 1px var(--rda-navy) !important;
    z-index: 1;
}

/* Paiement : tous les cadres en coins carrés (23/09/2026). Restent ronds, par
   nature : les boutons radio et la pastille de quantité des vignettes. */
.wc-block-components-express-payment__title-container::before,
.wc-block-components-checkbox__input,
.wc-block-components-address-card,
.wc-blocks-components-select__container,
.wc-block-components-radio-control-accordion-option,
.wc-block-components-radio-control-accordion-option::after,
.wp-block-woocommerce-checkout-order-summary-block,
.wc-block-components-express-payment--checkout .wc-block-components-express-payment__content {
    border-radius: 0 !important;
}

/* Pied de page : logo descendu de 41 px (40 px de marge + 1 px de filet), de sorte
   que son bas arrive où était le filet, supprimé. Le texte en dessous ne bouge pas. */
.rda-footer-logo {
    margin-top: 41px;
}

/* Moyens de paiement (accordéon) : c'est le bloc entier qui porte le cadre ; l'en-tête
   « Moyens de paiement » ne reçoit pas le trait d'option choisie, sinon double ligne
   dans le cadre. Et 16 px au-dessus des champs de carte, que WooCommerce collait à
   l'en-tête (padding 0 en haut) quand le bandeau Link ne s'intercale pas. */
.wc-block-components-radio-control-accordion-option .wc-block-components-radio-control__option,
.wc-block-components-radio-control-accordion-option .wc-block-components-radio-control__option.wc-block-components-radio-control__option-checked {
    box-shadow: none !important;
    margin-top: 0 !important;
}
.wc-block-components-radio-control-accordion-content {
    padding-top: 16px !important;
}

/* Liens « Conditions générales » et « Politique de confidentialité » sous le bouton
   Commander : au survol, bleu nuit plein et sans soulignement (23/09/2026). */
.wc-block-checkout__terms a:hover,
.wc-block-checkout__terms a:focus-visible {
    color: var(--rda-navy) !important;
    text-decoration: none !important;
}

/* Bouton « Commander » : même hauteur que « Valider la commande » du panier
   (56 px : 21 px en haut et en bas), au lieu de 46 px (23/09/2026). */
.wc-block-components-checkout-place-order-button {
    padding-top: 21px !important;
    padding-bottom: 21px !important;
    min-height: 56px !important;
    height: auto !important;
}
