        :root { --joy-rouge:#FF0000; --joy-fond:transparent; --joy-carte:rgba(255,255,255,0.06); --joy-bordure:rgba(255,255,255,0.15); --joy-blanc:#FFFFFF; --joy-gris:#999999; --joy-gold:#C9A961; }
        html,body { overflow-x:hidden !important; }
        .woocommerce-cart .site-content,.woocommerce-cart #content,.woocommerce-cart #primary,.woocommerce-cart main,.woocommerce-cart .ast-container,.woocommerce-cart #content-wrap { width:100% !important; max-width:100% !important; padding:0 !important; margin:0 !important; }
        .joy-cw { background:var(--joy-fond); min-height:50vh; padding:20px 15px 40px; font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif; color:var(--joy-blanc); width:100%; box-sizing:border-box; }
        @media(min-width:769px){.joy-cw{padding:40px 30px 60px;}}
        .joy-ct { font-size:20px; font-weight:800; text-transform:uppercase; letter-spacing:2px; text-align:center; margin:0 0 24px; color:var(--joy-blanc); }
        @media(min-width:769px){.joy-ct{font-size:26px;margin-bottom:36px;}}
        .joy-cl { display:flex; flex-direction:column; gap:16px; max-width:1100px; margin:0 auto; }
        @media(min-width:900px){.joy-cl{flex-direction:row;align-items:flex-start;gap:28px;} .joy-ci{flex:1 1 0;} .joy-cs{flex:0 0 340px;position:sticky;top:124px;}}
        .joy-ci { display:flex; flex-direction:column; gap:16px; }
        .joy-item { background:var(--joy-carte); border:2px solid var(--joy-bordure); border-radius:12px; backdrop-filter:blur(10px); -webkit-backdrop-filter:blur(10px); padding:16px; display:flex; gap:14px; align-items:flex-start; position:relative; }
        .joy-img { flex:0 0 72px; width:72px; height:72px; background:rgba(255,255,255,0.04); border-radius:8px; overflow:hidden; border:1px solid var(--joy-bordure); }
        @media(min-width:769px){.joy-img{flex:0 0 88px;width:88px;height:88px;}}
        .joy-img img { width:100%; height:100%; object-fit:cover; }
        .joy-ib { flex:1; min-width:0; overflow:hidden; }
        .joy-iname { font-size:13px; font-weight:700; color:var(--joy-blanc); margin:0 0 5px; line-height:1.3; padding-right:22px; }
        .joy-rm { position:absolute; top:8px; right:10px; background:none; border:none; color:var(--joy-gris); font-size:13px; cursor:pointer; padding:4px; }
        .joy-rm:hover { color:var(--joy-blanc) !important; }
        .joy-ictrl { display:flex; align-items:center; gap:8px; margin-top:8px; }
        .joy-qw { display:flex; align-items:center; background:transparent; border:1px solid var(--joy-bordure); border-radius:6px; overflow:hidden; height:28px; flex-shrink:0; margin-left:auto; }
        .joy-qb { background:none !important; border:none; color:var(--joy-blanc, #FFFFFF) !important; font-size:14px; font-weight:600; cursor:pointer; padding:0 10px; height:28px; user-select:none; -webkit-tap-highlight-color:transparent; line-height:1; }
        @media (hover:hover) { .joy-qb:hover { background:rgba(255,255,255,0.08) !important; color:var(--joy-blanc, #FFFFFF) !important; } }
        .joy-qb:focus, .joy-qb:focus-visible, .joy-qb:active { outline:none; background:rgba(255,255,255,0.12) !important; color:var(--joy-blanc, #FFFFFF) !important; }
        /* Champ saisissable, d'apparence identique à l'ancien texte : le client
           peut taper directement au lieu de cliquer dix fois. Les !important
           sont nécessaires — le thème et WooCommerce stylent les <input>, ce
           qui redonnait au champ un fond blanc et l'étirait sur toute la
           largeur du bloc. */
        .joy-qw input.joy-qi {
            flex:0 0 40px !important; width:40px !important;
            min-width:0 !important; max-width:40px !important; display:block !important;
            background:transparent !important; border:none !important;
            border-left:1px solid var(--joy-bordure) !important;
            border-right:1px solid var(--joy-bordure) !important;
            border-radius:0 !important; box-shadow:none !important;
            color:var(--joy-blanc) !important; font-size:12px !important; font-weight:700 !important;
            height:28px !important; min-height:0 !important; line-height:28px !important;
            text-align:center !important; padding:0 !important; margin:0 !important;
            -moz-appearance:textfield;
        }
        .joy-qw input.joy-qi:focus { outline:none !important; background:rgba(255,255,255,0.06) !important; }
        .joy-qw input.joy-qi::-webkit-outer-spin-button,
        .joy-qw input.joy-qi::-webkit-inner-spin-button { -webkit-appearance:none; margin:0; }
        .joy-iprice { font-size:14px; font-weight:700; color:var(--joy-rouge); white-space:nowrap; flex-shrink:0; }
        .joy-ivar { font-size:11px; color:var(--joy-gris); margin:0 0 6px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
        .joy-imeta { display:flex; flex-direction:column; gap:3px; margin-bottom:4px; }
        .joy-mrow { display:flex; gap:6px; font-size:11px; flex-wrap:wrap; align-items:center; }
        .joy-mlabel { color:var(--joy-gris); }
        .joy-mval { color:var(--joy-blanc); font-weight:600; word-break:break-all; }
        /* Panier vide */
        .joy-empty-wrap { max-width:600px; margin:0 auto; display:flex; flex-direction:column; gap:20px; }
        .joy-empty-card { background:var(--joy-carte); border:2px solid var(--joy-bordure); border-radius:12px; backdrop-filter:blur(10px); -webkit-backdrop-filter:blur(10px); padding:40px 20px 36px; display:flex; flex-direction:column; align-items:center; text-align:center; }
        .joy-empty-icon { font-size:64px; margin-bottom:18px; opacity:0.55; }
        .joy-empty-title { font-size:18px; font-weight:700; color:var(--joy-blanc); margin:0 0 8px; }
        .joy-empty-text { font-size:13px; color:var(--joy-gris); margin:0 0 24px; line-height:1.5; }
        .joy-btn-shop { display:inline-flex; align-items:center; gap:8px; background:var(--joy-rouge); color:var(--joy-blanc); padding:11px 24px; border-radius:50px; text-decoration:none; font-weight:700; font-size:13px; text-transform:uppercase; transition:all 0.3s; }
        .joy-btn-shop:hover { background:#AA0000 !important; color:#fff !important; }
        .joy-popular-section { background:var(--joy-carte); border:2px solid var(--joy-bordure); border-radius:12px; backdrop-filter:blur(10px); -webkit-backdrop-filter:blur(10px); padding:16px; }
        .joy-popular-header { display:flex; align-items:center; gap:8px; margin-bottom:14px; padding-bottom:12px; border-bottom:1px solid var(--joy-bordure); }
        .joy-popular-title { font-size:13px; font-weight:700; text-transform:uppercase; letter-spacing:1px; color:var(--joy-blanc); }
        .joy-popular-scroll { display:flex; gap:10px; overflow-x:auto; padding-bottom:4px; scrollbar-width:none;overscroll-behavior-x:contain;touch-action:pan-x pan-y;}
        .joy-popular-scroll::-webkit-scrollbar { display:none; }
        .joy-pop-card { flex:0 0 100px; background:var(--joy-fond); border:1px solid var(--joy-bordure); border-radius:8px; overflow:hidden; text-decoration:none; transition:border-color 0.3s,transform 0.2s; display:block; }
        @media(min-width:769px){.joy-pop-card{flex:0 0 120px;}}
        .joy-pop-card:hover { border-color:var(--joy-rouge) !important; }
        .joy-pop-img { width:100%; height:76px; background:rgba(255,255,255,0.04); overflow:hidden; }
        .joy-pop-img img { width:100%; height:100%; object-fit:cover; }
        .joy-pop-info { padding:7px; }
        .joy-pop-name { font-size:10px; font-weight:600; color:var(--joy-blanc); line-height:1.3; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; margin-bottom:4px; }
        .joy-pop-price { font-size:10px; font-weight:700; color:var(--joy-rouge); }
        /* Sidebar */
        .joy-cs { display:flex; flex-direction:column; gap:16px; }
        .joy-coup { background:var(--joy-carte); border:2px solid var(--joy-bordure); border-radius:12px; backdrop-filter:blur(10px); -webkit-backdrop-filter:blur(10px); padding:16px; }
        .joy-clabel { font-size:13px; font-weight:700; color:var(--joy-blanc); margin:0 0 10px; display:flex; align-items:center; gap:6px; }
        .joy-cform { display:flex; gap:8px; }
        /* Champ code promo. Les !important sont nécessaires : le thème et
           WooCommerce stylent les <input> avec une priorité plus forte, ce qui
           redonnait au champ un fond BLANC opaque — un rectangle clair au
           milieu d'un panier sombre. */
        .joy-cform input.joy-cinput {
            flex:1;
            background:rgba(255,255,255,0.06) !important;
            border:1px solid rgba(255,255,255,0.16) !important;
            border-radius:10px !important;
            padding:10px 14px !important;
            color:var(--joy-blanc, #fff) !important;
            -webkit-text-fill-color:var(--joy-blanc, #fff) !important;
            font-size:13px !important;
            outline:none !important;
            box-shadow:none !important;
        }
        .joy-cform input.joy-cinput::placeholder { color:rgba(255,255,255,0.38) !important; }
        .joy-cform input.joy-cinput:focus {
            border-color:var(--joy-rouge) !important;
            background:rgba(255,255,255,0.10) !important;
        }
        .joy-cinput::placeholder { color:var(--joy-gris); }
        .joy-cbtn { background:var(--joy-rouge); color:#FFFFFF !important; border:none; border-radius:10px; padding:10px 16px; font-size:13px; font-weight:700; cursor:pointer; white-space:nowrap; }
        .joy-cbtn:hover,
        .joy-cbtn:focus,
        .joy-cbtn:active { background:#CC0000 !important; color:#FFFFFF !important; }
        .joy-ctags { margin-top:10px; display:flex; flex-direction:column; gap:6px; }
        .joy-ctag { display:flex; align-items:center; justify-content:space-between; background:rgba(255,0,0,.08); border:1px solid rgba(255,0,0,.3); border-radius:6px; padding:7px 10px; font-size:12px; }
        .joy-ctag-code { color:var(--joy-rouge); font-weight:700; }
        .joy-coup-autre { background:none; border:none; color:var(--joy-gris); font-size:12px; cursor:pointer; padding:6px 0 0; text-align:left; }
        .joy-coup-autre:hover { color:var(--joy-blanc) !important; }
        .joy-ctag-rm { background:none; border:none; color:var(--joy-gris); cursor:pointer; font-size:14px; padding:0; }
        .joy-ctag-rm:hover { color:var(--joy-rouge) !important; }
        .joy-sum { background:var(--joy-carte); border:2px solid var(--joy-bordure); border-radius:12px; backdrop-filter:blur(10px); -webkit-backdrop-filter:blur(10px); padding:16px; }
        .joy-stitle { font-size:16px; font-weight:700; color:var(--joy-blanc); margin:0 0 14px; padding-bottom:12px; border-bottom:1px solid var(--joy-bordure); }
        .joy-srow { display:flex; justify-content:space-between; font-size:14px; margin-bottom:10px; }
        .joy-slabel { color:var(--joy-gris); }
        .joy-sval { color:var(--joy-blanc); font-weight:600; }
        .joy-sdiv { height:1px; background:var(--joy-bordure); margin:12px 0; }
        .joy-strow { display:flex; justify-content:space-between; align-items:center; margin-bottom:14px; }
        .joy-stlabel { font-size:16px; font-weight:700; color:var(--joy-blanc); }
        .joy-stval { font-size:22px; font-weight:800; color:var(--joy-rouge); }
        .joy-coins { padding:2px 0; display:flex; align-items:center; gap:8px; font-size:12px; color:var(--joy-gold); margin-bottom:14px; }
        .joy-btns { display:flex; flex-direction:column; gap:10px; }
        .joy-btn-co { display:block; width:100%; background:var(--joy-rouge); color:#FFFFFF !important; border:none; border-radius:10px; padding:14px; font-size:14px; font-weight:700; cursor:pointer; text-align:center; text-decoration:none; transition:all 0.3s; box-sizing:border-box; }
        .joy-btn-co:hover,
        .joy-btn-co:focus,
        .joy-btn-co:active { background:#AA0000 !important; color:#FFFFFF !important; }
        .joy-btn-cont { display:block; text-align:center; color:var(--joy-blanc); font-size:13px; font-weight:700; text-decoration:none; padding:12px; border:1px solid rgba(255,255,255,0.22); border-radius:10px; box-sizing:border-box; transition:border-color 0.2s, background 0.2s; }
        .joy-btn-cont:hover { color:var(--joy-blanc) !important; border-color:rgba(255,255,255,0.5); background:rgba(255,255,255,0.05); }

        /* 3.0 — le thème ne repeint pas les boutons du panier (mêmes valeurs que plus haut ;
           ex. Twenty Twenty-One rendait « Appliquer » gris au lieu de rouge). */
        #joy-panier .joy-rm, #joy-panier .joy-ctag-rm, #joy-panier .joy-coup-autre { background: none; border: none; color: var(--joy-gris); }
        #joy-panier .joy-rm { padding: 4px; font-size: 13px; }
        #joy-panier .joy-ctag-rm { padding: 0; font-size: 14px; }
        #joy-panier .joy-coup-autre { padding: 6px 0 0; font-size: 12px; }
        #joy-panier .joy-cbtn { background: var(--joy-rouge); color: #FFFFFF; border: none; border-radius: 10px; padding: 10px 16px; font-size: 13px; }
        #joy-panier .joy-cbtn:disabled { opacity: .85; }
        #joy-panier .joy-qb { border: none; padding: 0 10px; }
