@font-face{font-family:Poppins;src:url('/fonts/poppins-400.woff2') format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:Poppins;src:url('/fonts/poppins-600.woff2') format('woff2');font-weight:600;font-display:swap}
@font-face{font-family:Poppins;src:url('/fonts/poppins-700.woff2') format('woff2');font-weight:700;font-display:swap}
@font-face{font-family:'Dharma Gothic E';src:url('/fonts/DharmaGothicE-Bold.woff2') format('woff2');font-weight:700;font-display:swap}
:root{--fuu-ink:#0b0b0b;--fuu-coral:#ff6e50;--fuu-coral-ink:#e2553a;--fuu-butter:#fcfe5b;--fuu-rose:#fff0ed;--fuu-line:#9a9a9a}
body{margin:0!important;color:var(--fuu-ink)!important;background:#fff!important;font-family:Poppins,Arial,sans-serif!important;font-size:16px!important;line-height:1.6}
header#top,footer#bottom,.o_footer,.o_cookie_bar,.o_website_cookie_notice{display:none!important}
#wrap{display:block!important;min-height:50vh!important;overflow:visible!important}
#wrapwrap{overflow-x:clip}
#wrap .container,#wrap .container-fluid,.fuu-skin-shell{width:min(1280px,calc(100% - 48px));max-width:1280px;margin-inline:auto}
#wrap h1,#wrap h2,#wrap h3,#wrap h4{color:var(--fuu-ink);font-family:Poppins,Arial,sans-serif;font-weight:700;line-height:1.15}
#wrap h1{font-family:'Dharma Gothic E',Impact,'Arial Narrow',sans-serif;font-size:clamp(3.5rem,7vw,6.8rem);line-height:.92;text-transform:uppercase}
#wrap a{color:#9c301d}
#wrap .btn-primary,#wrap .a-submit,#wrap a.btn-primary,#wrap button.btn-primary{min-height:48px;border:2px solid var(--fuu-coral)!important;border-radius:5px!important;background:var(--fuu-coral)!important;color:var(--fuu-ink)!important;font-weight:700!important;text-transform:uppercase;box-shadow:none!important}
#wrap .btn-primary:hover,#wrap .a-submit:hover{border-color:var(--fuu-coral-ink)!important;background:var(--fuu-coral-ink)!important}
#wrap .btn-secondary,#wrap .btn-outline-primary{min-height:44px;border:2px solid var(--fuu-ink)!important;border-radius:5px!important;background:#fff!important;color:var(--fuu-ink)!important;box-shadow:none!important}
#wrap input,#wrap select,#wrap textarea{min-height:44px;border-color:#6b6b6b;border-radius:5px;font:inherit}
#wrap input:focus,#wrap select:focus,#wrap textarea:focus,#wrap a:focus-visible,#wrap button:focus-visible{outline:3px solid var(--fuu-coral)!important;outline-offset:3px;box-shadow:none!important}
.website_sale,.oe_website_sale,.o_portal{padding-block:38px 72px}
#cart_products,.oe_cart table,.o_portal table{width:100%;border-collapse:collapse}
#cart_products th,#cart_products td,.oe_cart th,.oe_cart td,.o_portal th,.o_portal td{padding:14px 12px;border-bottom:1px solid #c8c8c8;vertical-align:middle}
#cart_total,.o_wsale_order_summary{border:1px solid #c8c8c8;border-top:5px solid var(--fuu-coral);border-radius:0!important;box-shadow:none!important}
.o_wsale_product_image{background:#f7f7f7}
.fuu-skin-header{position:relative;z-index:100;background:var(--fuu-ink);color:#fff}
.fuu-skin-top{min-height:78px;display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:28px}
.fuu-skin-top img{display:block;width:204px;height:auto}.fuu-skin-top p{margin:0;font-size:12px}.fuu-skin-top>a:nth-of-type(2){padding:10px 16px;border-radius:999px;background:var(--fuu-coral);color:var(--fuu-ink);font-size:12px;font-weight:700;text-transform:uppercase}
.fuu-skin-actions{display:flex;gap:16px}.fuu-skin-header a{color:inherit;text-decoration:none}.fuu-skin-nav{min-height:54px;display:flex;align-items:center;gap:32px;border-top:1px solid #383838}.fuu-skin-nav a{font-size:12px;font-weight:600;text-transform:uppercase}
.fuu-skin-announcement{padding:8px 16px;background:var(--fuu-butter);color:var(--fuu-ink);font-size:14px;font-weight:700;text-align:center}
.fuu-skin-footer{padding-top:56px;background:var(--fuu-ink);color:#fff}.fuu-skin-footer a{color:inherit;text-decoration:none}.fuu-skin-footer-lede{display:grid;grid-template-columns:64px 1fr;align-items:center;gap:24px;padding-bottom:40px}.fuu-skin-footer-lede img{display:block;width:64px;height:auto}.fuu-skin-footer-lede strong{max-width:22ch;font-family:'Dharma Gothic E',Impact,sans-serif;font-size:clamp(2.6rem,5vw,5rem);line-height:.92}
.fuu-skin-footer-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:30px;padding-block:40px;border-top:2px solid var(--fuu-coral)}.fuu-skin-footer-grid>div{display:flex;flex-direction:column;gap:8px}.fuu-skin-footer-grid h2{margin:0 0 8px;color:var(--fuu-coral);font:700 13px Poppins;text-transform:uppercase}.fuu-skin-footer address{font-style:normal}.fuu-skin-bottom{min-height:64px;display:flex;align-items:center;justify-content:space-between;border-top:1px solid #444;font-size:12px}.fuu-skin-bottom nav{display:flex;gap:20px}
@media(max-width:800px){#wrap .container,#wrap .container-fluid,.fuu-skin-shell{width:calc(100% - 32px)}.fuu-skin-top{min-height:68px;grid-template-columns:1fr auto}.fuu-skin-top img{width:150px}.fuu-skin-top p,.fuu-skin-top>a:nth-of-type(2){display:none}.fuu-skin-actions a:not(:last-child){display:none}.fuu-skin-nav{padding-block:8px;gap:12px;overflow-x:auto}.fuu-skin-nav a{flex:0 0 auto;min-height:44px;display:flex;align-items:center}.website_sale,.oe_website_sale,.o_portal{padding-block:24px 52px}#cart_products{display:block;overflow-x:auto}.fuu-skin-footer-grid{grid-template-columns:1fr 1fr}.fuu-skin-bottom{align-items:flex-start;flex-direction:column;justify-content:center;padding-block:16px}.fuu-skin-bottom nav{flex-wrap:wrap}}
@media(max-width:480px){.fuu-skin-footer-grid{grid-template-columns:1fr}.fuu-skin-actions{font-size:14px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;transition-duration:.01ms!important}}
/* Rappel des promotions en cours sous le champ « code promo » du panier (mission I, skin v4).
   Charte FUU PRO web : Poppins, pastille beurre pour le code, CTA corail sur texte ink, radius 5/6/999.
   Le bloc s'injecte dans une cellule alignée à droite du récapitulatif Odoo : on reprend la main sur
   l'alignement, et les sélecteurs sont préfixés `#wrap` pour repasser devant `#wrap a{color:…}`. */
.fuu-promos{margin:12px 0 4px;padding:14px;border:1px solid var(--fuu-ink);border-radius:6px;background:#fff;font-family:Poppins,Arial,sans-serif;text-align:left}
.fuu-promos-titre{margin:0 0 10px!important;color:var(--fuu-ink)!important;font:700 12px/1.2 Poppins,Arial,sans-serif!important;letter-spacing:.08em;text-transform:uppercase}
.fuu-promos-titre::before{content:"";display:inline-block;width:8px;height:8px;margin-right:8px;transform:rotate(45deg);background:var(--fuu-coral);vertical-align:middle}
.fuu-promos-liste{display:flex;flex-direction:column;gap:10px;margin:0;padding:0;list-style:none}
.fuu-promo+.fuu-promo{padding-top:10px;border-top:1px solid #e2e2e2}
.fuu-promo-nom{margin:0;color:var(--fuu-ink);font:600 14px/1.35 Poppins,Arial,sans-serif}
.fuu-promo-meta{margin:3px 0 0;color:#6b6b6b;font:400 12px/1.4 Poppins,Arial,sans-serif}
.fuu-promo-actions{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;margin-top:9px}
#wrap .fuu-promo-code,.fuu-promo-code{min-height:34px;padding:7px 14px;border:1px solid var(--fuu-ink);border-radius:999px;background:var(--fuu-butter);box-shadow:none;color:var(--fuu-ink);font:700 13px/1 Poppins,Arial,sans-serif;letter-spacing:.06em;cursor:pointer}
#wrap .fuu-promo-code:hover,.fuu-promo-code:hover{background:#f0f244}
#wrap .fuu-promo-auto,.fuu-promo-auto{padding:7px 14px;border:1px solid var(--fuu-line);border-radius:999px;color:#6b6b6b;font:600 12px/1.3 Poppins,Arial,sans-serif;text-transform:uppercase}
/* CTA en LIEN corail, pas en bouton plein : la colonne du récapitulatif porte déjà le bouton
   corail « Appliquer », qui est l'action principale. Trois pavés corail de plus lui feraient
   concurrence et alourdiraient un bloc voulu discret (« on reste léger », Jean L, 05/09).
   Le corail plein #FF6E50 sur blanc ne passe pas 4.5:1 en texte : on prend la déclinaison
   sombre déjà utilisée par l'habillage pour les liens (#9c301d, ≈7:1), et le corail vif reste
   sur le soulignement et le chevron. Repasser en bouton = rétablir background/border ici. */
#wrap .fuu-promo-cta,.fuu-promo-cta{display:inline-flex;align-items:center;min-height:34px;padding:7px 2px;border-radius:5px;color:#9c301d!important;font:700 12px/1.2 Poppins,Arial,sans-serif;text-decoration:underline;text-decoration-color:var(--fuu-coral);text-decoration-thickness:2px;text-underline-offset:4px;text-transform:uppercase}
#wrap .fuu-promo-cta:hover,.fuu-promo-cta:hover{color:var(--fuu-ink)!important;text-decoration-color:var(--fuu-ink)}
/* L'habillage général met un contour corail : invisible sur un bouton corail ou beurre. */
#wrap .fuu-promos :focus-visible,.fuu-promos :focus-visible{outline:3px solid var(--fuu-ink)!important;outline-offset:2px}
.fuu-promos-annonce{margin:8px 0 0;color:#0b0b0b;font:600 12px/1.4 Poppins,Arial,sans-serif}
.fuu-promos-annonce:empty{display:none}
@media(max-width:480px){.fuu-promos{padding:12px}#wrap .fuu-promo-code,.fuu-promo-code,#wrap .fuu-promo-cta,.fuu-promo-cta{min-height:40px}}

/* --- v5 : « Souvent commandés avec votre panier » (mission K) ---------------------------------
   Le bloc est injecté sous les lignes du panier, DANS #wrap : les sélecteurs sont préfixés et
   les propriétés qu'Odoo/Bootstrap redéfinit sont forcées, comme pour le bloc des promos. */
#wrap .fuu-suggestions,.fuu-suggestions{margin:24px 0 8px;padding:16px;border:1px solid var(--fuu-ink);border-radius:6px;background:#fff;font-family:Poppins,Arial,sans-serif;text-align:left}
#wrap .fuu-suggestions-titre,.fuu-suggestions-titre{margin:0 0 4px!important;color:var(--fuu-ink)!important;font:700 13px/1.2 Poppins,Arial,sans-serif!important;letter-spacing:.08em;text-transform:uppercase}
.fuu-suggestions-titre::before{content:"";display:inline-block;width:8px;height:8px;margin-right:8px;transform:rotate(45deg);background:var(--fuu-coral);vertical-align:middle}
#wrap .fuu-suggestions-note,.fuu-suggestions-note{margin:0 0 14px!important;color:#6b6b6b!important;font:400 11px/1.4 Poppins,Arial,sans-serif!important}
#wrap .fuu-suggestions-liste,.fuu-suggestions-liste{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:0!important;padding:0!important;list-style:none}
#wrap .fuu-suggestion,.fuu-suggestion{display:flex;align-items:flex-start;gap:12px;min-width:0;padding:12px;border:1px solid var(--fuu-line);border-radius:5px;background:#fff}
#wrap .fuu-suggestion-visuel,.fuu-suggestion-visuel{display:block;flex:0 0 64px;width:64px;height:64px;border-radius:4px;background:#f6f6f6;overflow:hidden}
#wrap .fuu-suggestion-image,.fuu-suggestion-image{display:block;width:64px;height:64px;border-radius:4px;background:#f6f6f6;object-fit:contain}
.fuu-suggestion-sans-image{display:block}
#wrap .fuu-suggestion-corps,.fuu-suggestion-corps{flex:1 1 auto;min-width:0}
#wrap .fuu-suggestion-nom,.fuu-suggestion-nom{margin:0!important;color:var(--fuu-ink)!important;font:700 13px/1.3 Poppins,Arial,sans-serif!important}
#wrap .fuu-suggestion-variante,.fuu-suggestion-variante{margin:2px 0 0!important;color:#4a4a4a!important;font:400 12px/1.35 Poppins,Arial,sans-serif!important}
#wrap .fuu-suggestion-argument,.fuu-suggestion-argument{margin:6px 0 0!important;padding-left:8px;border-left:3px solid var(--fuu-butter);color:#4a4a4a!important;font:400 11px/1.45 Poppins,Arial,sans-serif!important}
#wrap .fuu-suggestion-actions,.fuu-suggestion-actions{display:flex;flex:0 0 auto;flex-direction:column;align-items:flex-end;gap:6px;text-align:right}
#wrap .fuu-suggestion-prix,.fuu-suggestion-prix{margin:0!important;color:var(--fuu-ink)!important;font:700 14px/1.2 Poppins,Arial,sans-serif!important;white-space:nowrap}
#wrap .fuu-suggestion-multiple,.fuu-suggestion-multiple{margin:0!important;color:#6b6b6b!important;font:600 10px/1.2 Poppins,Arial,sans-serif!important;letter-spacing:.06em;text-transform:uppercase}
#wrap .fuu-suggestion-ajout,.fuu-suggestion-ajout{min-height:36px;padding:8px 16px;border:1px solid var(--fuu-coral);border-radius:5px;background:var(--fuu-coral);box-shadow:none;color:var(--fuu-ink);font:700 12px/1 Poppins,Arial,sans-serif;letter-spacing:.04em;text-transform:uppercase;cursor:pointer;white-space:nowrap}
#wrap .fuu-suggestion-ajout:hover,.fuu-suggestion-ajout:hover{background:#e2553a;border-color:#e2553a}
#wrap .fuu-suggestion-ajout:disabled,.fuu-suggestion-ajout:disabled{opacity:.55;cursor:not-allowed}
#wrap .fuu-suggestion-indispo,.fuu-suggestion-indispo{margin:0!important;color:#9c301d!important;font:700 11px/1.3 Poppins,Arial,sans-serif!important}
#wrap .fuu-suggestions :focus-visible,.fuu-suggestions :focus-visible{outline:3px solid var(--fuu-ink)!important;outline-offset:2px}
#wrap .fuu-suggestions-annonce,.fuu-suggestions-annonce{margin:12px 0 0!important;color:#0b0b0b!important;font:600 12px/1.4 Poppins,Arial,sans-serif!important}
.fuu-suggestions-annonce:empty{display:none}
@media(max-width:820px){#wrap .fuu-suggestions-liste,.fuu-suggestions-liste{grid-template-columns:minmax(0,1fr)}}
@media(max-width:480px){#wrap .fuu-suggestions,.fuu-suggestions{padding:12px}#wrap .fuu-suggestion,.fuu-suggestion{flex-wrap:wrap}#wrap .fuu-suggestion-actions,.fuu-suggestion-actions{flex-direction:row;flex-wrap:wrap;align-items:center;width:100%;justify-content:space-between}#wrap .fuu-suggestion-ajout,.fuu-suggestion-ajout{min-height:44px}}

/* --- v6 : accéder à la fiche, choisir la quantité (mission Q1, recette Jean L du 06/09) -------
   Deux ajouts et aucune reprise des règles v5 : la vignette devient un lien (surface cliquable,
   retirée du parcours clavier — c'est le nom qui porte le lien nommé), et le bouton « Ajouter »
   ouvre un choix de quantité posé DANS la colonne d'actions de la carte. */
#wrap .fuu-suggestion-lien,.fuu-suggestion-lien{color:var(--fuu-ink)!important;text-decoration:none}
#wrap .fuu-suggestion-lien:hover,.fuu-suggestion-lien:hover{color:#9c301d!important;text-decoration:underline;text-decoration-color:var(--fuu-coral);text-decoration-thickness:2px;text-underline-offset:3px}
#wrap .fuu-suggestion-quantite,.fuu-suggestion-quantite{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:6px;max-width:190px}
/* Les trois pièces du pas forment un seul bloc : pas d'espace entre −, le champ et +. */
#wrap .fuu-suggestion-pas,.fuu-suggestion-pas{width:36px;min-height:36px;padding:0;border:1px solid var(--fuu-ink);border-radius:5px;background:#fff;box-shadow:none;color:var(--fuu-ink);font:700 16px/1 Poppins,Arial,sans-serif;cursor:pointer}
#wrap .fuu-suggestion-pas:disabled,.fuu-suggestion-pas:disabled{opacity:.4;cursor:not-allowed}
#wrap .fuu-suggestion-qte,.fuu-suggestion-qte{width:56px;min-height:36px;padding:4px 6px;border:1px solid var(--fuu-ink);border-radius:5px;background:#fff;color:var(--fuu-ink);font:700 14px/1 Poppins,Arial,sans-serif;text-align:center}
#wrap .fuu-suggestion-valider,.fuu-suggestion-valider{min-height:36px;padding:8px 14px;border:1px solid var(--fuu-coral);border-radius:5px;background:var(--fuu-coral);box-shadow:none;color:var(--fuu-ink);font:700 12px/1 Poppins,Arial,sans-serif;letter-spacing:.04em;text-transform:uppercase;cursor:pointer;white-space:nowrap}
#wrap .fuu-suggestion-valider:hover,.fuu-suggestion-valider:hover{background:#e2553a;border-color:#e2553a}
#wrap .fuu-suggestion-valider:disabled,.fuu-suggestion-valider:disabled{opacity:.55;cursor:not-allowed}
/* Annuler reste un lien : c'est l'action de repli, elle ne doit pas peser autant que Confirmer. */
#wrap .fuu-suggestion-annuler,.fuu-suggestion-annuler{min-height:36px;padding:8px 4px;border:0;border-radius:5px;background:none;box-shadow:none;color:#6b6b6b;font:600 11px/1 Poppins,Arial,sans-serif;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
#wrap .fuu-suggestion-annuler:hover,.fuu-suggestion-annuler:hover{color:var(--fuu-ink)}
#wrap .fuu-suggestion-aide,.fuu-suggestion-aide{flex:0 0 100%;margin:0!important;color:#6b6b6b!important;font:600 10px/1.35 Poppins,Arial,sans-serif!important;letter-spacing:.04em;text-align:right}
#wrap .fuu-suggestion-aide:empty,.fuu-suggestion-aide:empty{display:none}
/* Toast : le front Next a le sien, la page Odoo n'en a pas. Hors #wrap, donc sans préfixe. */
.fuu-skin-toast{position:fixed;z-index:1080;right:20px;bottom:20px;max-width:min(360px,calc(100vw - 40px));padding:14px 18px;border:1px solid var(--fuu-ink);border-left:5px solid var(--fuu-coral);border-radius:6px;background:#fff;box-shadow:0 8px 24px rgba(0,0,0,.18);color:var(--fuu-ink);font:600 13px/1.45 Poppins,Arial,sans-serif;opacity:0;transform:translateY(10px);transition:opacity .18s ease,transform .18s ease;pointer-events:none}
.fuu-skin-toast[data-visible="1"]{opacity:1;transform:none}
.fuu-skin-toast-erreur{border-left-color:#9c301d}
.fuu-skin-toast:empty{display:none}
@media(max-width:480px){.fuu-skin-toast{right:12px;left:12px;bottom:12px;max-width:none}#wrap .fuu-suggestion-quantite,.fuu-suggestion-quantite{max-width:none;width:100%}#wrap .fuu-suggestion-pas,.fuu-suggestion-pas,#wrap .fuu-suggestion-qte,.fuu-suggestion-qte,#wrap .fuu-suggestion-valider,.fuu-suggestion-valider{min-height:44px}}

/* --- Alignement de la ligne « Remise » du récapitulatif (mission Q1, retour Jean L du 06/09) ---
   🔴 Le défaut ne vient PAS de l'habillage : il vient du gabarit Odoo. La vue
   `website_sale_loyalty.cart_discount` (ir.ui.view id 14286, ACTIVE sur le site 1 « THE FUU |
   SITE B2B », relevée en lecture le 06/09) insère dans `#cart_total` une ligne à DEUX cellules
   là où toutes les autres en ont trois. Le raisonnement complet est dans `odoo-skin.js`, section
   « Alignement de la ligne Remise » — c'est LUI qui corrige, en rendant à la ligne le `colspan`
   qui lui manque.

   ⚠️ Pourquoi pas en CSS seul : mesuré, pas supposé. Passer cette ligne en `display:flex` la sort
   du modèle de tableau, le navigateur l'enveloppe dans une ligne anonyme, et son `width:100%` se
   résout à 252 px au lieu des 376 px du tableau (Firefox 153, `deploy/fixtures/cart-remise.html`,
   fenêtre 1440). Et aucune règle CSS ne peut déplacer une cellule d'une colonne à l'autre.

   Ce qui reste ici est un FILET, utile quand le script ne tourne pas (JS coupé, chargement
   interrompu) : il ne remet pas le montant dans la bonne colonne, mais il rétablit au moins le
   sens de lecture — libellé à gauche comme « Sous-total : », montant aligné à droite à TOUTES les
   largeurs (Odoo ne l'aligne qu'au-dessus de 1200 px avec `text-xl-end`) — et le padding des
   voisines. Les mêmes valeurs que celles posées par le script : les deux ne se contredisent pas. */
#wrap #cart_total td[title="Montant de la remise"]{padding:0 0 .5rem!important;text-align:left!important}
#wrap #cart_total td[title="Montant de la remise"]+td{padding:0 0 .5rem!important;text-align:right!important;white-space:nowrap}

/* Prix barré d'une ligne remisée (`website_sale.cart_lines` id 2190) : Odoo pose encore
   `class="text-danger mr8"` sur le `<del>`, or `mr8` est une classe Bootstrap 3 qui n'existe plus
   en 17 — l'ancien prix et le nouveau se retrouvent COLLÉS sur la même ligne, et se coupent au
   milieu quand la colonne est étroite. On les empile, alignés à droite comme le reste de la
   colonne. Le rouge Bootstrap (#dc3545, ≈4,0:1 sur blanc) est remplacé par le rouge sombre déjà
   utilisé par l'habillage (#9c301d, ≈7:1) : un prix barré est du petit texte. */
#wrap #cart_products [name="website_sale_cart_line_price"]{display:flex;flex-direction:column;align-items:flex-end;gap:2px}
#wrap #cart_products [name="website_sale_cart_line_price"] del{margin-right:0!important;color:#9c301d!important;font-size:.85em;font-weight:600}

/* --- v7 : retours de la recette 2 du 25/09/2026 ---------------------------------------------
   Quatre corrections, toutes portées par l'habillage parce que les pages concernées sont
   servies par Odoo : on ne touche ni au module `sk_quick_shop` ni au portail. */

/* #35 — le panneau de quantité (190 px) prenait sa place dans la colonne de droite de la carte,
   ce qui écrasait la colonne du nom : le titre retombait à un mot par ligne et passait sous le
   bouton « Confirmer ». Panneau ouvert, la carte passe en deux rangées : nom et vignette en
   haut, quantité et boutons sur toute la largeur en dessous. */
#wrap .fuu-suggestion:has(.fuu-suggestion-quantite),.fuu-suggestion:has(.fuu-suggestion-quantite){flex-wrap:wrap}
#wrap .fuu-suggestion:has(.fuu-suggestion-quantite) .fuu-suggestion-actions,.fuu-suggestion:has(.fuu-suggestion-quantite) .fuu-suggestion-actions{flex:1 1 100%;flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:flex-start;gap:6px 12px;margin-top:10px;padding-top:10px;border-top:1px solid var(--fuu-line);text-align:left}
#wrap .fuu-suggestion:has(.fuu-suggestion-quantite) .fuu-suggestion-quantite,.fuu-suggestion:has(.fuu-suggestion-quantite) .fuu-suggestion-quantite{flex:1 1 100%;max-width:none;justify-content:flex-start}
#wrap .fuu-suggestion-aide,.fuu-suggestion-aide{flex:1 1 100%;margin:0!important;color:#4a4a4a!important;font:600 11px/1.4 Poppins,Arial,sans-serif!important;text-align:left}

/* #31 — « Commander à nouveau rapidement » est un vrai bouton Odoo (#quick_reorder_button, il
   ouvre le tiroir de recommande), mais l'habillage le rendait en texte gris : la recette l'a lu
   comme un libellé mort. On lui redonne l'allure d'une action, celle des CTA de promo. */
#wrap #quick_reorder_button,#quick_reorder_button{display:inline-flex;align-items:center;min-height:34px;padding:6px 2px;border:0;background:none;box-shadow:none;color:#9c301d!important;font:700 12px/1.2 Poppins,Arial,sans-serif;letter-spacing:.04em;text-decoration:underline;text-decoration-color:var(--fuu-coral);text-decoration-thickness:2px;text-underline-offset:4px;text-transform:uppercase;cursor:pointer}
#wrap #quick_reorder_button:hover,#quick_reorder_button:hover{color:var(--fuu-ink)!important;text-decoration-color:var(--fuu-ink)}

/* #30 — la page « Sécurité du compte » propose d'activer l'authentification à deux facteurs,
   qui n'est pas en service sur ce site : la section entière est retirée plutôt que de laisser
   un réglage sans suite. Le bouton `#auth_totp_portal_enable` est le seul repère stable. */
#wrap section:has(#auth_totp_portal_enable){display:none!important}

/* #30 — « Connaissances » et « Documents » du portail pointent vers le BACK-OFFICE Odoo
   (/knowledge/home et /odoo/documents_portal), que le tunnel ferme volontairement depuis le
   durcissement du 05/09 : les deux cartes ne pouvaient donc mener qu'à une page introuvable.
   Tant qu'il n'existe pas de page portail pour ces deux modules, on ne les propose pas. */
#wrap .o_portal_index_card:has(a[href^="/knowledge"]),#wrap .o_portal_index_card:has(a[href^="/odoo/"]){display:none!important}

/* #41 et #70 — le pied de page des pages Odoo reprend maintenant les rubriques du shop
   (quatre colonnes, « Suivez-nous » dans la colonne Contact) et la même bande d'inscription :
   logo plus grand, titre d'un cran plus bas, formulaire à droite. */
.fuu-skin-footer-lede{grid-template-columns:96px minmax(0,1fr) minmax(17rem,24rem);gap:24px 32px}
.fuu-skin-footer-lede img{width:96px;height:auto}
.fuu-skin-footer-lede strong{max-width:20ch;font-size:clamp(2rem,3vw,2.75rem)}
.fuu-skin-footer-grid{grid-template-columns:1.2fr 1.2fr 1.2fr 1fr}
.fuu-skin-footer-grid nav{display:flex;flex-direction:column;gap:8px;margin-top:16px}
.fuu-skin-footer address{margin-top:16px}

/* Formulaire d'inscription de l'habillage : mêmes formes que `newsletter-form` du front.
   Il est posté par `odoo-skin.js` sur /api/forms/newsletter, la route du front. */
.fuu-skin-newsletter{margin:0}
.fuu-skin-newsletter label{display:block;margin-bottom:8px;font:600 13px Poppins,Arial,sans-serif}
.fuu-skin-newsletter>div{display:grid;grid-template-columns:1fr auto}
.fuu-skin-newsletter input{min-width:0;min-height:48px;padding:8px 12px;border:1px solid #fff;border-radius:6px 0 0 6px;background:#fff;color:var(--fuu-ink);font:400 14px Poppins,Arial,sans-serif}
.fuu-skin-newsletter button{min-height:48px;padding:8px 16px;border:1px solid var(--fuu-coral);border-radius:0 6px 6px 0;background:var(--fuu-coral);color:var(--fuu-ink);font:700 14px Poppins,Arial,sans-serif;cursor:pointer}
.fuu-skin-newsletter button:disabled{opacity:.55;cursor:not-allowed}
.fuu-skin-newsletter p{min-height:24px;margin:4px 0 0;font:400 13px Poppins,Arial,sans-serif}

@media(max-width:800px){
  .fuu-skin-footer-lede{grid-template-columns:72px minmax(0,1fr);gap:16px}
  .fuu-skin-footer-lede img{width:72px}
  .fuu-skin-footer-lede strong{font-size:2.2rem}
  .fuu-skin-newsletter{grid-column:1/-1}
  .fuu-skin-newsletter>div{grid-template-columns:1fr}
  .fuu-skin-newsletter input,.fuu-skin-newsletter button{border-radius:6px}
  .fuu-skin-footer-grid{grid-template-columns:1fr 1fr}
}
@media(max-width:480px){.fuu-skin-footer-grid{grid-template-columns:1fr}}

/* #59 — bandeau d'entête des cours Fuuniversity (website_slides, servi par Odoo).
   La couverture porte un dégradé violet Odoo posé en style en ligne, et le titre hérite d'une
   couleur sombre : sur plusieurs cours, le titre devenait noir sur noir. On impose le noir de
   la charte et le texte en blanc, sur TOUTES les couvertures de cours. */
#wrap .o_wslides_course_header .o_record_cover_container,
#wrap .oe_structure > .o_record_cover_container,
#wrap .o_record_cover_container:has(.o_wslides_course_header) {
  background-color: var(--fuu-ink) !important;
  background-image: none !important;
}
#wrap .o_wslides_course_header {
  background: var(--fuu-ink) !important;
}
#wrap .o_wslides_course_header,
#wrap .o_wslides_course_header :is(h1, h2, h3, h4, p, span, li, small, a, .breadcrumb-item, .breadcrumb-item::before) {
  color: #fff !important;
}
#wrap .o_wslides_course_header a:hover {
  color: var(--fuu-coral) !important;
}

/* ==========================================================================
   Mise au carré de l'étape Mode de livraison, 29/09
   Checkout Odoo 19 (/shop/checkout) : titres, transporteurs, adresses, récapitulatif.
   ========================================================================== */

/* 1. Titres de l'étape */
#wrap #o_delivery_form h4,
#wrap #delivery_address_list h5 {
  margin: 0 0 16px;
  color: var(--fuu-ink);
  font-family: Poppins, Arial, sans-serif;
  font-weight: 700;
  font-size: 18px;
  line-height: 1.2;
  text-transform: uppercase;
  letter-spacing: .04em;
}

/* 2. Liste des transporteurs : une carte par mode de livraison */
#wrap ul#o_delivery_methods {
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin: 0;
  padding: 0;
  list-style: none;
}
#wrap ul#o_delivery_methods > li.list-group-item {
  margin: 0;
  padding: 16px 18px;
  border: 1px solid #c8c8c8;
  border-radius: 6px;
  background: #fff;
  color: var(--fuu-ink);
  cursor: pointer;
}
#wrap ul#o_delivery_methods > li.list-group-item:first-child,
#wrap ul#o_delivery_methods > li.list-group-item:last-child,
#wrap ul#o_delivery_methods > li.list-group-item + li.list-group-item {
  border-width: 1px;
  border-radius: 6px;
}
#wrap ul#o_delivery_methods > li.list-group-item:hover {
  border-color: var(--fuu-ink);
}
#wrap ul#o_delivery_methods > li.list-group-item:has(input:checked) {
  padding: 15px 17px; /* compense le bord de 2 px, pas de saut de mise en page */
  border: 2px solid var(--fuu-coral);
  background: var(--fuu-rose);
}
#wrap ul#o_delivery_methods > li.list-group-item > .d-flex {
  align-items: center;
}
#wrap ul#o_delivery_methods .form-check {
  display: flex;
  align-items: center;
  gap: 12px;
  min-height: 0;
  margin: 0;
  padding: 0;
}
#wrap ul#o_delivery_methods .form-check-input {
  position: static !important;
  flex: 0 0 20px;
  width: 20px;
  height: 20px;
  margin: 0;
  float: none;
  accent-color: var(--fuu-coral);
  cursor: pointer;
}
#wrap ul#o_delivery_methods .form-check-label {
  margin: 0;
  font-size: 15px;
  font-weight: 600;
  line-height: 1.3;
  cursor: pointer;
}
#wrap ul#o_delivery_methods .o_wsale_delivery_price_badge {
  color: var(--fuu-ink);
  font-size: 15px;
  font-weight: 700;
  white-space: nowrap;
}
#wrap ul#o_delivery_methods .o_wsale_delivery_price_badge small {
  color: #6b6b6b;
  font-size: 13px;
  font-weight: 400;
}
#wrap ul#o_delivery_methods [name=o_pickup_location] {
  margin-top: 12px;
}
#wrap ul#o_delivery_methods [name=o_pickup_location_details] {
  padding: 14px !important;
  border: 1px solid #c8c8c8 !important;
  border-radius: 6px !important;
  background: #fff;
}

/* 3. Cartes d'adresse */
#wrap #delivery_address_list .o_address_card,
#wrap #delivery_address_list .card {
  padding: 16px;
  border: 1px solid #c8c8c8;
  border-radius: 6px;
  background: #fff;
}
#wrap #delivery_address_list .o_address_card.border-primary,
#wrap #delivery_address_list .o_address_card.bg-primary-subtle,
#wrap #delivery_address_list .o_address_card.active,
#wrap #delivery_address_list .o_address_card:has(input:checked) {
  border: 2px solid var(--fuu-coral) !important;
  padding: 15px;
}
#wrap #delivery_address_list .o_address_card_add_new {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 40px;
  min-height: 40px;
  margin-left: auto;
  padding: 0 16px;
}

/* 4. Récapitulatif de commande */
#wrap .o_wsale_order_summary table,
#wrap #o_wsale_total_accordion table {
  width: 100%;
  border-collapse: collapse;
}
#wrap .o_wsale_order_summary th,
#wrap .o_wsale_order_summary td,
#wrap #o_wsale_total_accordion th,
#wrap #o_wsale_total_accordion td {
  padding: 10px 12px;
  border: 0;
  text-align: left;
  vertical-align: middle;
}
#wrap .o_wsale_order_summary td:last-child,
#wrap .o_wsale_order_summary th:last-child,
#wrap #o_wsale_total_accordion td:last-child,
#wrap #o_wsale_total_accordion th:last-child,
#wrap .o_wsale_order_summary .monetary_field,
#wrap #o_wsale_total_accordion .monetary_field {
  text-align: right;
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
#wrap .o_wsale_order_summary tr + tr > td,
#wrap .o_wsale_order_summary tr + tr > th,
#wrap #o_wsale_total_accordion tr + tr > td,
#wrap #o_wsale_total_accordion tr + tr > th {
  border-top: 1px solid #e3e3e3;
}
#wrap .o_wsale_order_summary tr:last-child > td,
#wrap .o_wsale_order_summary tr:last-child > th,
#wrap #o_wsale_total_accordion tr:last-child > td,
#wrap #o_wsale_total_accordion tr:last-child > th,
#wrap .o_wsale_order_summary #order_total > td,
#wrap .o_wsale_order_summary #order_total > th,
#wrap #o_wsale_total_accordion #order_total > td,
#wrap #o_wsale_total_accordion #order_total > th {
  border-top: 2px solid var(--fuu-ink);
  font-weight: 700;
}
#wrap .o_wsale_order_summary .btn-primary,
#wrap #o_wsale_total_accordion ~ .btn-primary,
#wrap #o_wsale_total_accordion .btn-primary {
  display: block;
  width: 100%;
  margin-top: 16px;
}

/* 5. Mobile */
@media (max-width: 800px) {
  #wrap ul#o_delivery_methods > li.list-group-item,
  #wrap #delivery_address_list .o_address_card,
  #wrap #delivery_address_list .card {
    width: 100%;
    padding: 14px;
  }
  #wrap ul#o_delivery_methods > li.list-group-item:has(input:checked) {
    padding: 13px;
  }
  #wrap ul#o_delivery_methods > li.list-group-item > .d-flex {
    flex-wrap: wrap;
    align-items: flex-start;
  }
  #wrap ul#o_delivery_methods .form-check {
    flex: 1 1 100%;
  }
  #wrap ul#o_delivery_methods .o_wsale_delivery_price_badge {
    flex: 1 1 100%;
    padding-left: 32px; /* sous le label : 20 px de radio + 12 px de gap */
    text-align: left !important;
  }
  #wrap #delivery_address_list .o_address_card_add_new,
  #wrap #o_delivery_form .btn-primary,
  #wrap .o_wsale_order_summary .btn-primary {
    width: 100%;
    margin-left: 0;
  }
}

/* ==========================================================================
   Portail Mon compte et confirmation de paiement, 30/09
   /my (portal.portal_my_home), listes, /shop/confirmation, wishlist retirée.
   ========================================================================== */

/* 1. Mon compte : titre, fil d'Ariane */
#wrap.o_portal_wrap .wrapper > h3,
#wrap .o_portal_content > h3 {
  margin: 8px 0 20px !important;
  font-family: 'Dharma Gothic E', Impact, 'Arial Narrow', sans-serif;
  font-size: clamp(2.6rem, 5vw, 4.2rem);
  font-weight: 400;
  line-height: .95;
  text-transform: uppercase;
}
.o_portal .breadcrumb,
.o_portal_submenu {
  margin: 0;
  padding: 0;
  background: none;
  font: 400 13px/1.4 Poppins, Arial, sans-serif;
}
.o_portal .breadcrumb-item,
.o_portal_submenu .breadcrumb-item {
  color: #6b6b6b;
  font-size: 13px;
}
.o_portal .breadcrumb-item + .breadcrumb-item::before,
.o_portal_submenu .breadcrumb-item + .breadcrumb-item::before {
  content: "/";
  padding-right: 8px;
  color: #c8c8c8;
}
.o_portal .breadcrumb-item a {
  color: #6b6b6b;
  text-decoration: none;
}
.o_portal .breadcrumb-item a:hover {
  color: var(--fuu-ink);
  text-decoration: underline;
  text-decoration-color: var(--fuu-coral);
}
.o_portal .breadcrumb-item.active {
  color: var(--fuu-ink);
  font-weight: 600;
}

/* 2. Mon compte : grille des entrées, une carte blanche par entrée */
#wrap .o_portal_docs,
#wrap .o_portal_category {
  --bs-gutter-x: 16px;
  --bs-gutter-y: 16px;
}
#wrap .o_portal_index_card > a,
#wrap .o_portal_docs a.list-group-item {
  height: 100%;
  padding: 18px !important;
  border: 1px solid #c8c8c8;
  border-radius: 6px !important;
  background: #fff !important;
  color: var(--fuu-ink) !important;
  text-decoration: none !important;
  align-items: center;
}
#wrap .o_portal_index_card > a:hover,
#wrap .o_portal_docs a.list-group-item:hover {
  border-color: var(--fuu-ink);
}
#wrap .o_portal_index_card > a.alert {
  border: 2px solid var(--fuu-ink);
  border-left: 6px solid var(--fuu-coral);
}
/* Pictos des cartes de « Mon compte » retirés (recette n° 215, 01/10/2026) : leur image ne se charge pas
   derrière le proxy et le bloc réservait 40 px de vide à gauche du titre. */
#wrap .o_portal_index_card .o_portal_icon {
  display: none !important;
}
#wrap .o_portal_index_card .fs-5 {
  font: 600 15px/1.3 Poppins, Arial, sans-serif !important;
  color: var(--fuu-ink);
}
#wrap .o_portal_index_card .opacity-75 {
  color: #6b6b6b;
  font-size: 13px;
  line-height: 1.4;
  opacity: 1 !important;
}
#wrap .o_portal_index_card span[data-placeholder_count],
#wrap .o_portal_docs .badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 24px;
  padding: 3px 9px;
  border-radius: 999px;
  background: var(--fuu-ink) !important;
  color: var(--fuu-butter) !important;
  font: 700 12px/1.3 Poppins, Arial, sans-serif;
}
#wrap .o_portal_index_card span[data-placeholder_count]:empty {
  display: none;
}

/* 3. Colonne Détails et boutons d'action */
#wrap .o_portal_my_details,
#wrap .o_portal_contact_details,
#wrap .o_portal_my_home .o_portal_details,
#wrap .o_portal_side_content {
  padding: 18px;
  border: 1px solid #c8c8c8;
  border-radius: 6px;
  background: #fff;
  color: var(--fuu-ink);
  font-size: 14px;
  line-height: 1.5;
}
#wrap .o_portal_my_details h4,
#wrap .o_portal_my_details h5,
#wrap .o_portal_contact_details h4 {
  margin: 0 0 12px;
  font: 700 13px/1.2 Poppins, Arial, sans-serif;
  letter-spacing: .08em;
  text-transform: uppercase;
}
#wrap .o_portal_my_details a.btn,
#wrap .o_portal_contact_details a.btn,
#wrap .o_portal_security_body .btn-light,
#wrap .o_portal_content a.btn-light,
#wrap a.btn-light[href="/my/security"],
#wrap a.btn-light[href^="/my/account"] {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  padding: 8px 18px;
  border: 2px solid var(--fuu-ink) !important;
  border-radius: 5px !important;
  background: #fff !important;
  color: var(--fuu-ink) !important;
  font: 600 13px/1.2 Poppins, Arial, sans-serif;
  text-decoration: none !important;
  box-shadow: none !important;
}
#wrap .o_portal_my_details a.btn:hover,
#wrap .o_portal_contact_details a.btn:hover,
#wrap .o_portal_security_body .btn-light:hover,
#wrap .o_portal_content a.btn-light:hover {
  background: var(--fuu-butter) !important;
}

/* 4. Tables de listes : même alignement que .o_portal table */
#wrap .o_portal_my_doc_table {
  width: 100%;
  border-collapse: collapse;
  --bs-table-striped-bg: transparent;
  --bs-table-bg: transparent;
}
#wrap .o_portal_my_doc_table > :not(caption) > * > * {
  background-color: transparent !important;
  box-shadow: none;
}
#wrap .o_portal_my_doc_table thead th {
  border-bottom: 2px solid var(--fuu-ink);
  color: #6b6b6b;
  font: 600 12px/1.3 Poppins, Arial, sans-serif;
  letter-spacing: .06em;
  text-transform: uppercase;
  white-space: nowrap;
}
#wrap .o_portal_my_doc_table td {
  font-size: 14px;
}
#wrap .o_portal_my_doc_table td a {
  font-weight: 600;
}
#wrap .o_portal_my_doc_table th:last-child,
#wrap .o_portal_my_doc_table td:last-child,
#wrap .o_portal_my_doc_table .text-end,
#wrap .o_portal_my_doc_table .o_amount,
#wrap .o_portal_my_doc_table .monetary_field {
  text-align: right !important;
  font-variant-numeric: tabular-nums;
}
#wrap .o_portal_my_doc_table .badge {
  border-radius: 999px;
  font: 700 11px/1.3 Poppins, Arial, sans-serif;
  text-transform: uppercase;
}
#wrap .o_portal_pager .pagination .page-link {
  min-height: 40px;
  border-color: #c8c8c8;
  color: var(--fuu-ink);
}
#wrap .o_portal_pager .pagination .active .page-link {
  border-color: var(--fuu-ink);
  background: var(--fuu-ink);
  color: var(--fuu-butter);
}

/* 5. Recherche et tri */
#wrap .o_portal_search_panel,
#wrap form.o_portal_search {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
}
#wrap .o_portal_search_panel .form-control,
#wrap .o_portal_search_panel .form-select,
#wrap .o_portal_search_panel .btn,
#wrap form.o_portal_search .form-control,
#wrap form.o_portal_search .form-select,
#wrap form.o_portal_search .btn {
  min-height: 44px;
  border-radius: 5px;
  font: 400 14px/1.3 Poppins, Arial, sans-serif;
}
#wrap .o_portal_search_panel .form-control,
#wrap .o_portal_search_panel .form-select,
#wrap form.o_portal_search .form-control,
#wrap form.o_portal_search .form-select {
  border: 1px solid #9a9a9a;
  background-color: #fff;
  color: var(--fuu-ink);
}

/* 6. Wishlist abandonnée : masquée partout */
a[href="/shop/wishlist"],
a[href^="/shop/wishlist"],
.o_wsale_my_wish,
.o_add_wishlist,
.o_add_wishlist_dyn,
[name="o_wishlist"],
.o_wishlist_table,
.js_add_wishlist,
a.o_wishlist_cart_line,
#wrap .o_portal_docs a[href*="wishlist"],
#wrap .o_portal_index_card:has(a[href*="wishlist"]),
li:has(> a[href^="/shop/wishlist"]) {
  display: none !important;
}

/* 7. Confirmation de paiement */
.o_website_sale_checkout .oe_cart h3:first-child,
#wrap .oe_cart .d-flex > h3 {
  margin: 0;
  font-family: 'Dharma Gothic E', Impact, 'Arial Narrow', sans-serif;
  font-size: clamp(2.6rem, 5vw, 4.2rem);
  font-weight: 400;
  line-height: .95;
  text-transform: uppercase;
}
#wrap #order_name h5 {
  margin: 8px 0 0;
  font: 600 15px/1.3 Poppins, Arial, sans-serif;
  color: #6b6b6b;
}
#wrap [name="order_confirmation"] > .alert {
  padding: 18px 20px !important;
  border: 2px solid var(--fuu-ink);
  border-left: 6px solid var(--fuu-coral);
  border-radius: 6px;
  background: #fff;
  color: var(--fuu-ink);
  font-size: 15px;
  line-height: 1.5;
}
#wrap [name="order_confirmation"] > .alert.alert-danger {
  border-left-color: #ce0000;
}
#wrap [name="order_confirmation"] > .alert.alert-warning {
  border-left-color: var(--fuu-butter);
}
#wrap [name="order_confirmation"] > .alert.alert-info {
  border-left-color: var(--fuu-ink);
}
#wrap [name="order_confirmation"] > .alert > div:last-child {
  padding-bottom: 14px;
}
#wrap [name="order_confirmation"] .alert-link,
#wrap [name="order_confirmation"] .btn-link {
  color: var(--fuu-ink) !important;
}
#wrap .oe_cart .alert-info {
  border: 2px solid var(--fuu-ink);
  border-radius: 6px;
  background: #fff;
  color: var(--fuu-ink);
}

/* Récapitulatif : montants à droite, total en gras sous un filet de 2 px */
#wrap #o_wsale_total_accordion,
#wrap .o_wsale_order_summary,
#wrap .o_total_card {
  border-radius: 6px;
  background: #fff;
  color: var(--fuu-ink);
}
#wrap #o_wsale_total_accordion table,
#wrap .o_wsale_order_summary table,
#wrap .o_total_card table {
  width: 100%;
  border-collapse: collapse;
}
#wrap #o_wsale_total_accordion td:last-child,
#wrap #o_wsale_total_accordion th:last-child,
#wrap .o_wsale_order_summary td:last-child,
#wrap .o_wsale_order_summary th:last-child,
#wrap .o_total_card td:last-child,
#wrap .o_total_card th:last-child {
  text-align: right;
  font-variant-numeric: tabular-nums;
}
#wrap #o_wsale_total_accordion tr#order_total > *,
#wrap .o_wsale_order_summary tr#order_total > *,
#wrap .o_total_card tr#order_total > *,
#wrap .o_total_card .o_wsale_total_row:last-child > * {
  border-top: 2px solid var(--fuu-ink);
  font-weight: 700;
}

/* Boutons Retour à la boutique et Imprimer */
#wrap .oe_cart a[href="/shop/print"],
#wrap .oe_cart a.btn[href="/shop"] {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  padding: 8px 18px;
  border: 2px solid var(--fuu-ink) !important;
  border-radius: 5px !important;
  background: #fff !important;
  color: var(--fuu-ink) !important;
  font: 600 13px/1.2 Poppins, Arial, sans-serif;
  text-decoration: none !important;
  box-shadow: none !important;
}
#wrap .oe_cart a[href="/shop/print"]:hover,
#wrap .oe_cart a.btn[href="/shop"]:hover {
  background: var(--fuu-butter) !important;
}
#wrap .oe_cart a[href="/shop/print"] {
  margin-left: auto;
}
#wrap .oe_cart a.btn[href="/shop"] {
  float: right;
  margin-top: 16px;
}

/* 8. Mobile */
@media (max-width: 800px) {
  #wrap .o_portal_index_card {
    flex: 0 0 100%;
    width: 100%;
    max-width: 100%;
  }
  #wrap .o_portal_my_doc_table {
    display: block;
    overflow-x: auto;
  }
  #wrap .oe_cart a[href="/shop/print"],
  #wrap .oe_cart a.btn[href="/shop"] {
    display: flex;
    float: none;
    width: 100%;
    margin-left: 0;
  }
}

/* 30/09 : icônes du portail Odoo (/portal/static, /account/static) non servies par le proxy : on les masque, cartes texte seules. */
#wrap .o_portal_icon, #wrap .o_portal_docs img, #wrap .o_portal_index_card img { display: none !important; }

/* ==========================================================================================
 * Correctifs UX du tunnel www.erag.fr (audit fuu-forge du 30/09/2026), PROPOSITION pour Jean M.
 * À coller à la FIN de web-jm/public/odoo-skin.css. Charte FUU PRO : encre #0b0b0b, corail
 * #ff6e50, beurre #fcfe5b, rayons 5 à 6 px, Poppins (variables --fuu-* déjà posées en tête).
 * ========================================================================================== */
html {
  --ux-texte: var(--fuu-ink, #0b0b0b);
  --ux-attenue: #4a4a4a;
  --ux-ligne: var(--fuu-line, #9a9a9a);
  --ux-fond: #ffffff;
  --ux-fond-encart: var(--fuu-rose, #fff0ed);
}

/* 1. Boutons radio et cases : la règle `#wrap input { min-height: 44px; border-radius: 5px }`
      les transformait en pilules verticales vides (moyens de paiement, livraison). */
#wrap input:is([type="radio"], [type="checkbox"]) {
  min-height: 0 !important;
  width: 1.25rem !important;
  height: 1.25rem !important;
  flex: none;
}
#wrap input[type="radio"] { border-radius: 50% !important; }
#wrap input[type="checkbox"] { border-radius: 4px !important; }
#wrap input:is([type="radio"], [type="checkbox"]):checked { background-color: var(--fuu-coral, #ff6e50); border-color: var(--fuu-coral-ink, #e2553a); }
/* La ligne entière reste la cible tactile (44 px). */
#wrap .o_payment_form li[name="o_payment_option"] { min-height: 56px; cursor: pointer; }

/* 2. Quantités du panier : l'icône d'Odoo (police odoo_ui_icons) ne s'affiche pas, les boutons − et +
      étaient des cases vides. */
#wrap .css_quantity .oi-minus::before { content: "−"; font-family: Poppins, sans-serif; font-size: 1.25rem; font-weight: 600; font-style: normal; }
#wrap .css_quantity .oi-plus::before { content: "+"; font-family: Poppins, sans-serif; font-size: 1.25rem; font-weight: 600; font-style: normal; }
#wrap .css_quantity > .btn { min-width: 44px; min-height: 44px; display: inline-flex; align-items: center; justify-content: center; color: var(--fuu-ink, #0b0b0b); }

/* 3. Connexion en mobile : le formulaire passait sous la grande photo, hors du premier écran. */
@media (max-width: 991.98px) {
  html.ux-page-connexion .oe_website_login_container .s_text_image .row > div:has(> img) { order: 2; }
  html.ux-page-connexion .oe_website_login_container .s_text_image .row > div:has(form.oe_login_form) { order: 1; }
  html.ux-page-connexion .oe_website_login_container .s_text_image .row > div:has(> img) img { max-height: 220px; object-fit: cover; width: 100%; border-radius: 6px; }
}

/* 4. Bouton de paiement désactivé : la raison s'affiche dessous. */
#wrap .ux-attente-choix { margin: 8px 0 0; font-size: 0.9375rem; color: var(--fuu-ink, #0b0b0b); text-align: center; }
#wrap .ux-attente-choix:empty { display: none; }

/* ---------------------------------------------------------------------------------------------
   Tunnel d'achat : repères UX (audit du 30/09/2026, voir le bloc « Tunnel d'achat » de odoo-skin.js)
   --------------------------------------------------------------------------------------------- */
html #wrapwrap main .ux-livraison-a-venir { color: var(--ux-attenue, #5b6470); font-size: 0.875rem; }
html #wrapwrap main .ux-deja-client,
html #wrapwrap main .ux-cgv,
html #wrapwrap main .ux-attente-verif { margin: 12px 0 0; color: var(--ux-attenue, #5b6470); font-size: 0.9375rem; line-height: 1.5; }
html #wrapwrap main .ux-deja-client { text-align: center; }
html #wrapwrap main .ux-deja-client a,
html #wrapwrap main .ux-cgv a { color: var(--ux-texte, #111); text-decoration: underline; text-underline-offset: 0.2em; display: inline-block; padding: 6px 0; }
html #wrapwrap main .ux-cgv--bouton { text-align: center; font-size: 0.8125rem; }
html #wrapwrap main .ux-attente-verif:empty { display: none; }
/* Barre collante du panier : mobile et tablette seulement, masquée quand le vrai bouton est à l'écran. */
html .ux-barre-commande { display: none; }
@media (max-width: 991.98px) {
  html .ux-barre-commande {
    display: flex; align-items: center; gap: 16px; justify-content: space-between;
    position: fixed; left: 0; right: 0; bottom: 0; z-index: 30;
    padding: 12px 16px calc(12px + env(safe-area-inset-bottom));
    background: var(--ux-fond, #fff); border-top: 1px solid var(--ux-ligne, #d0d5db);
    transition: transform .2s ease;
  }
  html .ux-barre-commande--cachee { transform: translateY(110%); }
  html .ux-barre-commande__total { display: flex; flex-direction: column; margin: 0; color: var(--ux-texte, #111); font-family: inherit; line-height: 1.2; }
  html .ux-barre-commande__total span { font: 500 0.75rem/1.4 inherit; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ux-attenue, #5b6470); }
  html .ux-barre-commande__total strong { font-size: 1.25rem; font-weight: 700; }
  html .ux-barre-commande__bouton { flex: 1 1 auto; max-width: 260px; min-height: 48px; justify-content: center; }
  html.ux-avec-barre body { padding-bottom: calc(80px + env(safe-area-inset-bottom)); }
}
@media (prefers-reduced-motion: reduce) { html .ux-barre-commande { transition: none; } }
html #wrapwrap main .o_payment_form .ux-reseaux { display: block; margin-top: 2px; font-size: 0.8125rem; font-weight: 400; color: var(--ux-attenue, #5b6470) !important; }
html #wrapwrap main .ux-encart-connexion { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 16px; margin: 0 0 20px; padding: 14px 16px; border: 1px solid var(--ux-ligne, #d0d5db); background: var(--ux-fond-encart, transparent); }
html #wrapwrap main .ux-encart-connexion p { margin: 0; color: var(--ux-texte, #111); }
html #wrapwrap main .ux-encart-connexion a { font-weight: 600; min-height: 44px; display: inline-flex; align-items: center; }
html #wrapwrap main .ux-lien-fort { font-weight: 600; text-decoration: underline; text-underline-offset: 0.2em; }
/* Barre collante du panier : bouton corail à la charte, total en encre. */
html .ux-barre-commande { background: #ffffff; border-top: 3px solid var(--fuu-ink, #0b0b0b); }
html .ux-barre-commande .btn { border-radius: 5px; min-height: 48px; }
/* ===== Pages Odoo natives hors mise en page « site » (01/10/2026) =====================================
   Signature (Odoo Sign), réinitialisation du mot de passe, demande de compte, et toute page publique
   d'Odoo sans #wrap (agenda, enquête, Knowledge partagé…). Elles restent en Odoo natif, à la charte FUU PRO :
   page #eeeeee, encre, corail, Poppins, rayons 5/6 px, ombres dures, filets de 3 px. Le script pose
   `body.fuu-natif` (et `html.fuu-pdf-sign` dans le lecteur PDF de Sign) : rien ici ne touche les pages
   déjà habillées par #wrap. Texte encre sur corail (7,4:1) : jamais de blanc sur corail. */
body.fuu-natif{--bs-primary:#ff6e50;--bs-primary-rgb:255,110,80;--bs-link-color:#9c301d;--bs-link-color-rgb:156,48,29;--bs-link-hover-color:#0b0b0b;background:#eeeeee!important;color:var(--fuu-ink)!important;font-family:Poppins,Arial,sans-serif!important}
html.fuu-pdf-sign{--bs-primary:#ff6e50;--bs-primary-rgb:255,110,80}
html.fuu-pdf-sign .o_sign_sign_item_navigator{color:var(--fuu-ink)!important;font-family:Poppins,Arial,sans-serif!important;font-weight:700!important;letter-spacing:.02em}
.fuu-natif-barre{position:relative;z-index:1030;display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:64px;padding:0 max(16px,calc((100% - 1280px)/2));background:var(--fuu-ink);border-bottom:3px solid var(--fuu-coral)}
.fuu-natif-barre img{display:block;width:150px;height:auto}
.fuu-natif-barre a{color:#fff!important;font:600 14px/1.2 Poppins,Arial,sans-serif;text-decoration:none}
.fuu-natif-barre a:hover{text-decoration:underline}
.fuu-natif-barre a:focus-visible{outline:3px solid var(--fuu-coral);outline-offset:3px}
body.fuu-natif a{color:#9c301d}
body.fuu-natif .btn-primary,body.fuu-natif a.btn-primary{min-height:44px;border:2px solid var(--fuu-coral)!important;border-radius:5px!important;background:var(--fuu-coral)!important;color:var(--fuu-ink)!important;font-weight:700!important;text-transform:uppercase;box-shadow:none!important}
body.fuu-natif .btn-primary:hover,body.fuu-natif .btn-primary:focus{border-color:var(--fuu-coral-ink)!important;background:var(--fuu-coral-ink)!important}
body.fuu-natif .btn-secondary,body.fuu-natif .btn-outline-primary,body.fuu-natif .btn-light{border:2px solid var(--fuu-ink)!important;border-radius:5px!important;background:#fff!important;color:var(--fuu-ink)!important;box-shadow:none!important}
body.fuu-natif .btn-link{color:#9c301d!important}
body.fuu-natif .form-control,body.fuu-natif .form-select{min-height:44px;border:1px solid #6b6b6b;border-radius:5px;font:inherit}
body.fuu-natif .form-control:focus,body.fuu-natif .form-select:focus{border-color:var(--fuu-ink);box-shadow:none}
body.fuu-natif :focus-visible{outline:3px solid var(--fuu-coral)!important;outline-offset:3px;box-shadow:none!important}
body.fuu-natif .oe_login_form,body.fuu-natif .oe_signup_form,body.fuu-natif .oe_reset_password_form{max-width:440px;margin:48px auto 72px!important;padding:32px 28px;background:#fff;border:3px solid var(--fuu-ink);border-radius:6px;box-shadow:6px 6px 0 var(--fuu-ink)}
.fuu-natif-titre{margin:0 0 6px!important;font-family:'Dharma Gothic E',Impact,'Arial Narrow',sans-serif!important;font-size:clamp(2.6rem,6vw,3.6rem)!important;line-height:.92!important;text-transform:uppercase;color:var(--fuu-ink)}
.fuu-natif-intro{margin:0 0 22px;font-size:15px;line-height:1.5}
body.fuu-natif .o_auth_oauth_providers .list-group-item,body.fuu-natif .o_login_auth .list-group-item{border:2px solid var(--fuu-ink);border-radius:5px!important;color:var(--fuu-ink)}
body.fuu-natif.o_sign_document_body .o_sign_document{background:#eeeeee}
body.fuu-natif .modal-content{border:3px solid var(--fuu-ink);border-radius:6px;box-shadow:6px 6px 0 var(--fuu-ink)}
body.fuu-natif .modal-header{border-bottom:3px solid var(--fuu-coral)}
/* Encart promotionnel d'Odoo dans la fenêtre de fin de signature (« Inscrivez-vous gratuitement ») : hors marque. */
body.fuu-natif .fuu-natif-pub,body.fuu-natif .modal-body .alert:has(a[href*="odoo.com"]){display:none!important}
body.fuu-natif .modal-title{font-family:'Dharma Gothic E',Impact,'Arial Narrow',sans-serif!important;font-size:2.4rem!important;line-height:1!important;text-transform:uppercase}
@media(max-width:600px){.fuu-natif-barre{min-height:56px}.fuu-natif-barre img{width:120px}body.fuu-natif .oe_login_form,body.fuu-natif .oe_signup_form,body.fuu-natif .oe_reset_password_form{margin:24px 16px 48px!important;padding:24px 18px;box-shadow:4px 4px 0 var(--fuu-ink)}body.fuu-natif .form-control{font-size:16px}}
/* Connexion Google (01/10/2026) : réservée à l'équipe, sur odoo.erag.fr seulement (écran de consentement
   Google « Interne », route /auth_oauth non relayée sur www). Sur www, les clients ne voient aucun fournisseur. */
.o_login_auth{display:none!important}
/* Lien d'évitement « Se rendre au contenu » (visible au clavier) : jaune Odoo hors #wrap, remis au corail (01/10/2026). */
.o_skip_to_content.btn-primary,.o_skip_to_content.btn-primary:focus{border:2px solid var(--fuu-coral)!important;border-radius:5px!important;background:var(--fuu-coral)!important;color:var(--fuu-ink)!important;font-weight:700!important;box-shadow:none!important}
