{"id":15080,"date":"2025-08-29T19:19:51","date_gmt":"2025-08-29T19:19:51","guid":{"rendered":"https:\/\/graindesail.com\/?page_id=15080"},"modified":"2025-08-31T00:47:06","modified_gmt":"2025-08-31T00:47:06","slug":"commande-rapide","status":"publish","type":"page","link":"https:\/\/graindesail.com\/fr\/commande-rapide\/","title":{"rendered":"Commande rapide"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"15080\" class=\"elementor elementor-15080\" data-elementor-post-type=\"page\">\n\t\t\t\t\t\t<main class=\"elementor-section elementor-top-section elementor-element elementor-element-aa346d9 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"aa346d9\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-7b8e323\" data-id=\"7b8e323\" data-element_type=\"column\" data-e-type=\"column\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-a030de6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"a030de6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-f38cc32 elementor-hidden-tablet elementor-hidden-mobile\" data-id=\"f38cc32\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<aside class=\"elementor-section elementor-inner-section elementor-element elementor-element-ca12a53 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"ca12a53\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-dc2cebc\" data-id=\"dc2cebc\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-18d62c1 elementor-widget__width-auto elementor-absolute elementor-widget elementor-widget-text-editor\" data-id=\"18d62c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<span class=\"sidebar-title\">Filtrer par<\/span> \t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1fd573b elementor-widget elementor-widget-jet-smart-filters-remove-filters hide-widget\" data-id=\"1fd573b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"jet-smart-filters-remove-filters.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"jet-smart-filters-remove-filters jet-filter\"><div class=\"jet-remove-all-filters hide\">\n\t<button\n\t\ttype=\"button\"\n\t\tclass=\"jet-remove-all-filters__button\"\n\t\tdata-content-provider=\"epro-loop-builder\"\n\t\tdata-additional-providers=\"[&quot;epro-archive\\\/product_grid&quot;]\"\n\t\tdata-apply-type=\"ajax\"\n\t\tdata-query-id=\"product_grid\"\n\t\t\t>\n\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#e8eaed\"><path d=\"m256-200-56-56 224-224-224-224 56-56 224 224 224-224 56 56-224 224 224 224-56 56-224-224-224 224Z\"><\/path><\/svg> <span>Effacer tout<\/span>\t<\/button>\n<\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7b2c06f elementor-widget elementor-widget-jet-smart-filters-checkboxes\" data-id=\"7b2c06f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"jet-smart-filters-checkboxes.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"jet-smart-filters-checkboxes jet-filter jet-filter-indexed\" data-indexer-rule=\"show\" data-show-counter=\"yes\" data-change-counter=\"other_changed\"><div class=\"jet-filter-label\">Disponibilit\u00e9<\/div>\n<div class=\"jet-checkboxes-list\" data-query-type=\"meta_query\" data-query-var=\"_stock_status\" data-smart-filter=\"checkboxes\" data-filter-id=\"5163\" data-apply-type=\"ajax\" data-content-provider=\"epro-loop-builder\" data-additional-providers=\"\" data-query-id=\"product_grid\" data-active-label=\"\" data-layout-options=\"{&quot;show_label&quot;:true,&quot;display_options&quot;:{&quot;show_items_label&quot;:false,&quot;show_decorator&quot;:&quot;yes&quot;,&quot;filter_image_size&quot;:&quot;full&quot;,&quot;show_counter&quot;:&quot;yes&quot;,&quot;counter_prefix&quot;:&quot;(&quot;,&quot;counter_suffix&quot;:&quot;)&quot;}}\" data-query-var-suffix=\"\" data-apply-on=\"value\"><fieldset class=\"jet-checkboxes-list-wrapper\"><legend style=\"display:none;\">Disponibilit\u00e9<\/legend><div class=\"jet-checkboxes-list__row jet-filter-row\">\n\t\t<label class=\"jet-checkboxes-list__item\" >\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\tclass=\"jet-checkboxes-list__input\"\n\t\t\tname=\"_stock_status\"\n\t\t\tvalue=\"instock\"\n\t\t\tdata-label=\"En stock\"\n\t\t\taria-label=\"En stock\"\n\t\t\t\t\t>\n\t\t<div class=\"jet-checkboxes-list__button\">\n\t\t\t\t\t\t\t<span class=\"jet-checkboxes-list__decorator\">\n\t\t\t\t\t<i class=\"jet-checkboxes-list__checked-icon\"><svg width=\"28\" height=\"28\" viewBox=\"0 0 28 28\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t<path d=\"M26.109 8.844c0 0.391-0.156 0.781-0.438 1.062l-13.438 13.438c-0.281 0.281-0.672 0.438-1.062 0.438s-0.781-0.156-1.062-0.438l-7.781-7.781c-0.281-0.281-0.438-0.672-0.438-1.062s0.156-0.781 0.438-1.062l2.125-2.125c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l4.594 4.609 10.25-10.266c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l2.125 2.125c0.281 0.281 0.438 0.672 0.438 1.062z\"><\/path>\n<\/svg>\n<\/i>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"jet-checkboxes-list__label\">En stock<\/span>\n\t\t\t<span class=\"jet-filters-counter\"><span class=\"counter-prefix\">(<\/span><span class=\"value\">0<\/span><span class=\"counter-suffix\">)<\/span><\/span>\t\t<\/div>\n\t<\/label>\n<\/div><div class=\"jet-checkboxes-list__row jet-filter-row\">\n\t\t<label class=\"jet-checkboxes-list__item\" >\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\tclass=\"jet-checkboxes-list__input\"\n\t\t\tname=\"_stock_status\"\n\t\t\tvalue=\"outofstock\"\n\t\t\tdata-label=\"Non disponible\"\n\t\t\taria-label=\"Non disponible\"\n\t\t\t\t\t>\n\t\t<div class=\"jet-checkboxes-list__button\">\n\t\t\t\t\t\t\t<span class=\"jet-checkboxes-list__decorator\">\n\t\t\t\t\t<i class=\"jet-checkboxes-list__checked-icon\"><svg width=\"28\" height=\"28\" viewBox=\"0 0 28 28\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t<path d=\"M26.109 8.844c0 0.391-0.156 0.781-0.438 1.062l-13.438 13.438c-0.281 0.281-0.672 0.438-1.062 0.438s-0.781-0.156-1.062-0.438l-7.781-7.781c-0.281-0.281-0.438-0.672-0.438-1.062s0.156-0.781 0.438-1.062l2.125-2.125c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l4.594 4.609 10.25-10.266c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l2.125 2.125c0.281 0.281 0.438 0.672 0.438 1.062z\"><\/path>\n<\/svg>\n<\/i>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"jet-checkboxes-list__label\">Non disponible<\/span>\n\t\t\t<span class=\"jet-filters-counter\"><span class=\"counter-prefix\">(<\/span><span class=\"value\">0<\/span><span class=\"counter-suffix\">)<\/span><\/span>\t\t<\/div>\n\t<\/label>\n<\/div><\/fieldset><\/div>\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3db80f6 elementor-widget elementor-widget-jet-smart-filters-checkboxes\" data-id=\"3db80f6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"jet-smart-filters-checkboxes.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"jet-smart-filters-checkboxes jet-filter jet-filter-indexed\" data-indexer-rule=\"show\" data-show-counter=\"yes\" data-change-counter=\"other_changed\"><div class=\"jet-filter-label\">type de produit<\/div>\n<div class=\"jet-checkboxes-list\" data-query-type=\"tax_query\" data-query-var=\"product_cat\" data-smart-filter=\"checkboxes\" data-filter-id=\"15111\" data-apply-type=\"ajax\" data-content-provider=\"epro-loop-builder\" data-additional-providers=\"\" data-query-id=\"product_grid\" data-active-label=\"\" data-layout-options=\"{&quot;show_label&quot;:true,&quot;display_options&quot;:{&quot;show_items_label&quot;:false,&quot;show_decorator&quot;:&quot;yes&quot;,&quot;filter_image_size&quot;:&quot;full&quot;,&quot;show_counter&quot;:&quot;yes&quot;,&quot;counter_prefix&quot;:&quot;(&quot;,&quot;counter_suffix&quot;:&quot;)&quot;}}\" data-query-var-suffix=\"\" data-apply-on=\"value\"><fieldset class=\"jet-checkboxes-list-wrapper\"><legend style=\"display:none;\">type de produit<\/legend><div class=\"jet-list-tree\"><div class=\"jet-checkboxes-list__row jet-filter-row jet-list-tree__parent\">\n\t\t<label class=\"jet-checkboxes-list__item\" >\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\tclass=\"jet-checkboxes-list__input\"\n\t\t\tname=\"product_cat\"\n\t\t\tvalue=\"20\"\n\t\t\tdata-label=\"Accessoires\"\n\t\t\taria-label=\"Accessoires\"\n\t\t\t\t\t>\n\t\t<div class=\"jet-checkboxes-list__button\">\n\t\t\t\t\t\t\t<span class=\"jet-checkboxes-list__decorator\">\n\t\t\t\t\t<i class=\"jet-checkboxes-list__checked-icon\"><svg width=\"28\" height=\"28\" viewBox=\"0 0 28 28\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t<path d=\"M26.109 8.844c0 0.391-0.156 0.781-0.438 1.062l-13.438 13.438c-0.281 0.281-0.672 0.438-1.062 0.438s-0.781-0.156-1.062-0.438l-7.781-7.781c-0.281-0.281-0.438-0.672-0.438-1.062s0.156-0.781 0.438-1.062l2.125-2.125c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l4.594 4.609 10.25-10.266c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l2.125 2.125c0.281 0.281 0.438 0.672 0.438 1.062z\"><\/path>\n<\/svg>\n<\/i>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"jet-checkboxes-list__label\">Accessoires<\/span>\n\t\t\t<span class=\"jet-filters-counter\"><span class=\"counter-prefix\">(<\/span><span class=\"value\">0<\/span><span class=\"counter-suffix\">)<\/span><\/span>\t\t<\/div>\n\t<\/label>\n<\/div><div class='jet-list-tree__children'>\n<div class=\"jet-checkboxes-list__row jet-filter-row\">\n\t\t<label class=\"jet-checkboxes-list__item\" >\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\tclass=\"jet-checkboxes-list__input\"\n\t\t\tname=\"product_cat\"\n\t\t\tvalue=\"613\"\n\t\t\tdata-label=\"Tasses et Mugs\"\n\t\t\taria-label=\"Tasses et Mugs\"\n\t\t\t\t\t>\n\t\t<div class=\"jet-checkboxes-list__button\">\n\t\t\t\t\t\t\t<span class=\"jet-checkboxes-list__decorator\">\n\t\t\t\t\t<i class=\"jet-checkboxes-list__checked-icon\"><svg width=\"28\" height=\"28\" viewBox=\"0 0 28 28\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t<path d=\"M26.109 8.844c0 0.391-0.156 0.781-0.438 1.062l-13.438 13.438c-0.281 0.281-0.672 0.438-1.062 0.438s-0.781-0.156-1.062-0.438l-7.781-7.781c-0.281-0.281-0.438-0.672-0.438-1.062s0.156-0.781 0.438-1.062l2.125-2.125c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l4.594 4.609 10.25-10.266c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l2.125 2.125c0.281 0.281 0.438 0.672 0.438 1.062z\"><\/path>\n<\/svg>\n<\/i>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"jet-checkboxes-list__label\">Tasses et Mugs<\/span>\n\t\t\t<span class=\"jet-filters-counter\"><span class=\"counter-prefix\">(<\/span><span class=\"value\">0<\/span><span class=\"counter-suffix\">)<\/span><\/span>\t\t<\/div>\n\t<\/label>\n<\/div><div class=\"jet-checkboxes-list__row jet-filter-row\">\n\t\t<label class=\"jet-checkboxes-list__item\" >\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\tclass=\"jet-checkboxes-list__input\"\n\t\t\tname=\"product_cat\"\n\t\t\tvalue=\"612\"\n\t\t\tdata-label=\"Textiles\"\n\t\t\taria-label=\"Textiles\"\n\t\t\t\t\t>\n\t\t<div class=\"jet-checkboxes-list__button\">\n\t\t\t\t\t\t\t<span class=\"jet-checkboxes-list__decorator\">\n\t\t\t\t\t<i class=\"jet-checkboxes-list__checked-icon\"><svg width=\"28\" height=\"28\" viewBox=\"0 0 28 28\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t<path d=\"M26.109 8.844c0 0.391-0.156 0.781-0.438 1.062l-13.438 13.438c-0.281 0.281-0.672 0.438-1.062 0.438s-0.781-0.156-1.062-0.438l-7.781-7.781c-0.281-0.281-0.438-0.672-0.438-1.062s0.156-0.781 0.438-1.062l2.125-2.125c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l4.594 4.609 10.25-10.266c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l2.125 2.125c0.281 0.281 0.438 0.672 0.438 1.062z\"><\/path>\n<\/svg>\n<\/i>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"jet-checkboxes-list__label\">Textiles<\/span>\n\t\t\t<span class=\"jet-filters-counter\"><span class=\"counter-prefix\">(<\/span><span class=\"value\">0<\/span><span class=\"counter-suffix\">)<\/span><\/span>\t\t<\/div>\n\t<\/label>\n<\/div><div class=\"jet-checkboxes-list__row jet-filter-row\">\n\t\t<label class=\"jet-checkboxes-list__item\" >\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\tclass=\"jet-checkboxes-list__input\"\n\t\t\tname=\"product_cat\"\n\t\t\tvalue=\"547\"\n\t\t\tdata-label=\"Moulins \u00e0 caf\u00e9\"\n\t\t\taria-label=\"Moulins \u00e0 caf\u00e9\"\n\t\t\t\t\t>\n\t\t<div class=\"jet-checkboxes-list__button\">\n\t\t\t\t\t\t\t<span class=\"jet-checkboxes-list__decorator\">\n\t\t\t\t\t<i class=\"jet-checkboxes-list__checked-icon\"><svg width=\"28\" height=\"28\" viewBox=\"0 0 28 28\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t<path d=\"M26.109 8.844c0 0.391-0.156 0.781-0.438 1.062l-13.438 13.438c-0.281 0.281-0.672 0.438-1.062 0.438s-0.781-0.156-1.062-0.438l-7.781-7.781c-0.281-0.281-0.438-0.672-0.438-1.062s0.156-0.781 0.438-1.062l2.125-2.125c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l4.594 4.609 10.25-10.266c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l2.125 2.125c0.281 0.281 0.438 0.672 0.438 1.062z\"><\/path>\n<\/svg>\n<\/i>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"jet-checkboxes-list__label\">Moulins \u00e0 caf\u00e9<\/span>\n\t\t\t<span class=\"jet-filters-counter\"><span class=\"counter-prefix\">(<\/span><span class=\"value\">0<\/span><span class=\"counter-suffix\">)<\/span><\/span>\t\t<\/div>\n\t<\/label>\n<\/div><\/div>\n<div class=\"jet-checkboxes-list__row jet-filter-row\">\n\t\t<label class=\"jet-checkboxes-list__item\" >\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\tclass=\"jet-checkboxes-list__input\"\n\t\t\tname=\"product_cat\"\n\t\t\tvalue=\"546\"\n\t\t\tdata-label=\"APE\"\n\t\t\taria-label=\"APE\"\n\t\t\t\t\t>\n\t\t<div class=\"jet-checkboxes-list__button\">\n\t\t\t\t\t\t\t<span class=\"jet-checkboxes-list__decorator\">\n\t\t\t\t\t<i class=\"jet-checkboxes-list__checked-icon\"><svg width=\"28\" height=\"28\" viewBox=\"0 0 28 28\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t<path d=\"M26.109 8.844c0 0.391-0.156 0.781-0.438 1.062l-13.438 13.438c-0.281 0.281-0.672 0.438-1.062 0.438s-0.781-0.156-1.062-0.438l-7.781-7.781c-0.281-0.281-0.438-0.672-0.438-1.062s0.156-0.781 0.438-1.062l2.125-2.125c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l4.594 4.609 10.25-10.266c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l2.125 2.125c0.281 0.281 0.438 0.672 0.438 1.062z\"><\/path>\n<\/svg>\n<\/i>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"jet-checkboxes-list__label\">APE<\/span>\n\t\t\t<span class=\"jet-filters-counter\"><span class=\"counter-prefix\">(<\/span><span class=\"value\">0<\/span><span class=\"counter-suffix\">)<\/span><\/span>\t\t<\/div>\n\t<\/label>\n<\/div><div class=\"jet-checkboxes-list__row jet-filter-row jet-list-tree__parent\">\n\t\t<label class=\"jet-checkboxes-list__item\" >\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\tclass=\"jet-checkboxes-list__input\"\n\t\t\tname=\"product_cat\"\n\t\t\tvalue=\"242\"\n\t\t\tdata-label=\"Caf\u00e9\"\n\t\t\taria-label=\"Caf\u00e9\"\n\t\t\t\t\t>\n\t\t<div class=\"jet-checkboxes-list__button\">\n\t\t\t\t\t\t\t<span class=\"jet-checkboxes-list__decorator\">\n\t\t\t\t\t<i class=\"jet-checkboxes-list__checked-icon\"><svg width=\"28\" height=\"28\" viewBox=\"0 0 28 28\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t<path d=\"M26.109 8.844c0 0.391-0.156 0.781-0.438 1.062l-13.438 13.438c-0.281 0.281-0.672 0.438-1.062 0.438s-0.781-0.156-1.062-0.438l-7.781-7.781c-0.281-0.281-0.438-0.672-0.438-1.062s0.156-0.781 0.438-1.062l2.125-2.125c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l4.594 4.609 10.25-10.266c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l2.125 2.125c0.281 0.281 0.438 0.672 0.438 1.062z\"><\/path>\n<\/svg>\n<\/i>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"jet-checkboxes-list__label\">Caf\u00e9<\/span>\n\t\t\t<span class=\"jet-filters-counter\"><span class=\"counter-prefix\">(<\/span><span class=\"value\">0<\/span><span class=\"counter-suffix\">)<\/span><\/span>\t\t<\/div>\n\t<\/label>\n<\/div><div class='jet-list-tree__children'>\n<div class=\"jet-checkboxes-list__row jet-filter-row\">\n\t\t<label class=\"jet-checkboxes-list__item\" >\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\tclass=\"jet-checkboxes-list__input\"\n\t\t\tname=\"product_cat\"\n\t\t\tvalue=\"590\"\n\t\t\tdata-label=\"Caf\u00e9 en grains\"\n\t\t\taria-label=\"Caf\u00e9 en grains\"\n\t\t\t\t\t>\n\t\t<div class=\"jet-checkboxes-list__button\">\n\t\t\t\t\t\t\t<span class=\"jet-checkboxes-list__decorator\">\n\t\t\t\t\t<i class=\"jet-checkboxes-list__checked-icon\"><svg width=\"28\" height=\"28\" viewBox=\"0 0 28 28\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t<path d=\"M26.109 8.844c0 0.391-0.156 0.781-0.438 1.062l-13.438 13.438c-0.281 0.281-0.672 0.438-1.062 0.438s-0.781-0.156-1.062-0.438l-7.781-7.781c-0.281-0.281-0.438-0.672-0.438-1.062s0.156-0.781 0.438-1.062l2.125-2.125c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l4.594 4.609 10.25-10.266c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l2.125 2.125c0.281 0.281 0.438 0.672 0.438 1.062z\"><\/path>\n<\/svg>\n<\/i>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"jet-checkboxes-list__label\">Caf\u00e9 en grains<\/span>\n\t\t\t<span class=\"jet-filters-counter\"><span class=\"counter-prefix\">(<\/span><span class=\"value\">0<\/span><span class=\"counter-suffix\">)<\/span><\/span>\t\t<\/div>\n\t<\/label>\n<\/div><div class=\"jet-checkboxes-list__row jet-filter-row\">\n\t\t<label class=\"jet-checkboxes-list__item\" >\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\tclass=\"jet-checkboxes-list__input\"\n\t\t\tname=\"product_cat\"\n\t\t\tvalue=\"591\"\n\t\t\tdata-label=\"Caf\u00e9 moulu\"\n\t\t\taria-label=\"Caf\u00e9 moulu\"\n\t\t\t\t\t>\n\t\t<div class=\"jet-checkboxes-list__button\">\n\t\t\t\t\t\t\t<span class=\"jet-checkboxes-list__decorator\">\n\t\t\t\t\t<i class=\"jet-checkboxes-list__checked-icon\"><svg width=\"28\" height=\"28\" viewBox=\"0 0 28 28\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t<path d=\"M26.109 8.844c0 0.391-0.156 0.781-0.438 1.062l-13.438 13.438c-0.281 0.281-0.672 0.438-1.062 0.438s-0.781-0.156-1.062-0.438l-7.781-7.781c-0.281-0.281-0.438-0.672-0.438-1.062s0.156-0.781 0.438-1.062l2.125-2.125c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l4.594 4.609 10.25-10.266c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l2.125 2.125c0.281 0.281 0.438 0.672 0.438 1.062z\"><\/path>\n<\/svg>\n<\/i>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"jet-checkboxes-list__label\">Caf\u00e9 moulu<\/span>\n\t\t\t<span class=\"jet-filters-counter\"><span class=\"counter-prefix\">(<\/span><span class=\"value\">0<\/span><span class=\"counter-suffix\">)<\/span><\/span>\t\t<\/div>\n\t<\/label>\n<\/div><\/div>\n<div class=\"jet-checkboxes-list__row jet-filter-row jet-list-tree__parent\">\n\t\t<label class=\"jet-checkboxes-list__item\" >\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\tclass=\"jet-checkboxes-list__input\"\n\t\t\tname=\"product_cat\"\n\t\t\tvalue=\"42\"\n\t\t\tdata-label=\"Chocolat\"\n\t\t\taria-label=\"Chocolat\"\n\t\t\t\t\t>\n\t\t<div class=\"jet-checkboxes-list__button\">\n\t\t\t\t\t\t\t<span class=\"jet-checkboxes-list__decorator\">\n\t\t\t\t\t<i class=\"jet-checkboxes-list__checked-icon\"><svg width=\"28\" height=\"28\" viewBox=\"0 0 28 28\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t<path d=\"M26.109 8.844c0 0.391-0.156 0.781-0.438 1.062l-13.438 13.438c-0.281 0.281-0.672 0.438-1.062 0.438s-0.781-0.156-1.062-0.438l-7.781-7.781c-0.281-0.281-0.438-0.672-0.438-1.062s0.156-0.781 0.438-1.062l2.125-2.125c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l4.594 4.609 10.25-10.266c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l2.125 2.125c0.281 0.281 0.438 0.672 0.438 1.062z\"><\/path>\n<\/svg>\n<\/i>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"jet-checkboxes-list__label\">Chocolat<\/span>\n\t\t\t<span class=\"jet-filters-counter\"><span class=\"counter-prefix\">(<\/span><span class=\"value\">0<\/span><span class=\"counter-suffix\">)<\/span><\/span>\t\t<\/div>\n\t<\/label>\n<\/div><div class='jet-list-tree__children'>\n<div class=\"jet-checkboxes-list__row jet-filter-row\">\n\t\t<label class=\"jet-checkboxes-list__item\" >\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\tclass=\"jet-checkboxes-list__input\"\n\t\t\tname=\"product_cat\"\n\t\t\tvalue=\"609\"\n\t\t\tdata-label=\"Tablettes\"\n\t\t\taria-label=\"Tablettes\"\n\t\t\t\t\t>\n\t\t<div class=\"jet-checkboxes-list__button\">\n\t\t\t\t\t\t\t<span class=\"jet-checkboxes-list__decorator\">\n\t\t\t\t\t<i class=\"jet-checkboxes-list__checked-icon\"><svg width=\"28\" height=\"28\" viewBox=\"0 0 28 28\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t<path d=\"M26.109 8.844c0 0.391-0.156 0.781-0.438 1.062l-13.438 13.438c-0.281 0.281-0.672 0.438-1.062 0.438s-0.781-0.156-1.062-0.438l-7.781-7.781c-0.281-0.281-0.438-0.672-0.438-1.062s0.156-0.781 0.438-1.062l2.125-2.125c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l4.594 4.609 10.25-10.266c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l2.125 2.125c0.281 0.281 0.438 0.672 0.438 1.062z\"><\/path>\n<\/svg>\n<\/i>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"jet-checkboxes-list__label\">Tablettes<\/span>\n\t\t\t<span class=\"jet-filters-counter\"><span class=\"counter-prefix\">(<\/span><span class=\"value\">0<\/span><span class=\"counter-suffix\">)<\/span><\/span>\t\t<\/div>\n\t<\/label>\n<\/div><div class=\"jet-checkboxes-list__row jet-filter-row\">\n\t\t<label class=\"jet-checkboxes-list__item\" >\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\tclass=\"jet-checkboxes-list__input\"\n\t\t\tname=\"product_cat\"\n\t\t\tvalue=\"611\"\n\t\t\tdata-label=\"Pistoles\"\n\t\t\taria-label=\"Pistoles\"\n\t\t\t\t\t>\n\t\t<div class=\"jet-checkboxes-list__button\">\n\t\t\t\t\t\t\t<span class=\"jet-checkboxes-list__decorator\">\n\t\t\t\t\t<i class=\"jet-checkboxes-list__checked-icon\"><svg width=\"28\" height=\"28\" viewBox=\"0 0 28 28\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t<path d=\"M26.109 8.844c0 0.391-0.156 0.781-0.438 1.062l-13.438 13.438c-0.281 0.281-0.672 0.438-1.062 0.438s-0.781-0.156-1.062-0.438l-7.781-7.781c-0.281-0.281-0.438-0.672-0.438-1.062s0.156-0.781 0.438-1.062l2.125-2.125c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l4.594 4.609 10.25-10.266c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l2.125 2.125c0.281 0.281 0.438 0.672 0.438 1.062z\"><\/path>\n<\/svg>\n<\/i>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"jet-checkboxes-list__label\">Pistoles<\/span>\n\t\t\t<span class=\"jet-filters-counter\"><span class=\"counter-prefix\">(<\/span><span class=\"value\">0<\/span><span class=\"counter-suffix\">)<\/span><\/span>\t\t<\/div>\n\t<\/label>\n<\/div><div class=\"jet-checkboxes-list__row jet-filter-row\">\n\t\t<label class=\"jet-checkboxes-list__item\" >\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\tclass=\"jet-checkboxes-list__input\"\n\t\t\tname=\"product_cat\"\n\t\t\tvalue=\"610\"\n\t\t\tdata-label=\"Napolitains\"\n\t\t\taria-label=\"Napolitains\"\n\t\t\t\t\t>\n\t\t<div class=\"jet-checkboxes-list__button\">\n\t\t\t\t\t\t\t<span class=\"jet-checkboxes-list__decorator\">\n\t\t\t\t\t<i class=\"jet-checkboxes-list__checked-icon\"><svg width=\"28\" height=\"28\" viewBox=\"0 0 28 28\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t<path d=\"M26.109 8.844c0 0.391-0.156 0.781-0.438 1.062l-13.438 13.438c-0.281 0.281-0.672 0.438-1.062 0.438s-0.781-0.156-1.062-0.438l-7.781-7.781c-0.281-0.281-0.438-0.672-0.438-1.062s0.156-0.781 0.438-1.062l2.125-2.125c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l4.594 4.609 10.25-10.266c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l2.125 2.125c0.281 0.281 0.438 0.672 0.438 1.062z\"><\/path>\n<\/svg>\n<\/i>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"jet-checkboxes-list__label\">Napolitains<\/span>\n\t\t\t<span class=\"jet-filters-counter\"><span class=\"counter-prefix\">(<\/span><span class=\"value\">0<\/span><span class=\"counter-suffix\">)<\/span><\/span>\t\t<\/div>\n\t<\/label>\n<\/div><\/div>\n<div class=\"jet-checkboxes-list__row jet-filter-row\">\n\t\t<label class=\"jet-checkboxes-list__item\" >\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\tclass=\"jet-checkboxes-list__input\"\n\t\t\tname=\"product_cat\"\n\t\t\tvalue=\"45\"\n\t\t\tdata-label=\"Coffrets\"\n\t\t\taria-label=\"Coffrets\"\n\t\t\t\t\t>\n\t\t<div class=\"jet-checkboxes-list__button\">\n\t\t\t\t\t\t\t<span class=\"jet-checkboxes-list__decorator\">\n\t\t\t\t\t<i class=\"jet-checkboxes-list__checked-icon\"><svg width=\"28\" height=\"28\" viewBox=\"0 0 28 28\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t<path d=\"M26.109 8.844c0 0.391-0.156 0.781-0.438 1.062l-13.438 13.438c-0.281 0.281-0.672 0.438-1.062 0.438s-0.781-0.156-1.062-0.438l-7.781-7.781c-0.281-0.281-0.438-0.672-0.438-1.062s0.156-0.781 0.438-1.062l2.125-2.125c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l4.594 4.609 10.25-10.266c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l2.125 2.125c0.281 0.281 0.438 0.672 0.438 1.062z\"><\/path>\n<\/svg>\n<\/i>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"jet-checkboxes-list__label\">Coffrets<\/span>\n\t\t\t<span class=\"jet-filters-counter\"><span class=\"counter-prefix\">(<\/span><span class=\"value\">0<\/span><span class=\"counter-suffix\">)<\/span><\/span>\t\t<\/div>\n\t<\/label>\n<\/div><div class=\"jet-checkboxes-list__row jet-filter-row jet-list-tree__parent\">\n\t\t<label class=\"jet-checkboxes-list__item\" >\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\tclass=\"jet-checkboxes-list__input\"\n\t\t\tname=\"product_cat\"\n\t\t\tvalue=\"469\"\n\t\t\tdata-label=\"Gourmandises\"\n\t\t\taria-label=\"Gourmandises\"\n\t\t\t\t\t>\n\t\t<div class=\"jet-checkboxes-list__button\">\n\t\t\t\t\t\t\t<span class=\"jet-checkboxes-list__decorator\">\n\t\t\t\t\t<i class=\"jet-checkboxes-list__checked-icon\"><svg width=\"28\" height=\"28\" viewBox=\"0 0 28 28\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t<path d=\"M26.109 8.844c0 0.391-0.156 0.781-0.438 1.062l-13.438 13.438c-0.281 0.281-0.672 0.438-1.062 0.438s-0.781-0.156-1.062-0.438l-7.781-7.781c-0.281-0.281-0.438-0.672-0.438-1.062s0.156-0.781 0.438-1.062l2.125-2.125c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l4.594 4.609 10.25-10.266c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l2.125 2.125c0.281 0.281 0.438 0.672 0.438 1.062z\"><\/path>\n<\/svg>\n<\/i>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"jet-checkboxes-list__label\">Gourmandises<\/span>\n\t\t\t<span class=\"jet-filters-counter\"><span class=\"counter-prefix\">(<\/span><span class=\"value\">0<\/span><span class=\"counter-suffix\">)<\/span><\/span>\t\t<\/div>\n\t<\/label>\n<\/div><div class='jet-list-tree__children'>\n<div class=\"jet-checkboxes-list__row jet-filter-row\">\n\t\t<label class=\"jet-checkboxes-list__item\" >\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\tclass=\"jet-checkboxes-list__input\"\n\t\t\tname=\"product_cat\"\n\t\t\tvalue=\"608\"\n\t\t\tdata-label=\"Sachets\"\n\t\t\taria-label=\"Sachets\"\n\t\t\t\t\t>\n\t\t<div class=\"jet-checkboxes-list__button\">\n\t\t\t\t\t\t\t<span class=\"jet-checkboxes-list__decorator\">\n\t\t\t\t\t<i class=\"jet-checkboxes-list__checked-icon\"><svg width=\"28\" height=\"28\" viewBox=\"0 0 28 28\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t<path d=\"M26.109 8.844c0 0.391-0.156 0.781-0.438 1.062l-13.438 13.438c-0.281 0.281-0.672 0.438-1.062 0.438s-0.781-0.156-1.062-0.438l-7.781-7.781c-0.281-0.281-0.438-0.672-0.438-1.062s0.156-0.781 0.438-1.062l2.125-2.125c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l4.594 4.609 10.25-10.266c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l2.125 2.125c0.281 0.281 0.438 0.672 0.438 1.062z\"><\/path>\n<\/svg>\n<\/i>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"jet-checkboxes-list__label\">Sachets<\/span>\n\t\t\t<span class=\"jet-filters-counter\"><span class=\"counter-prefix\">(<\/span><span class=\"value\">0<\/span><span class=\"counter-suffix\">)<\/span><\/span>\t\t<\/div>\n\t<\/label>\n<\/div><div class=\"jet-checkboxes-list__row jet-filter-row\">\n\t\t<label class=\"jet-checkboxes-list__item\" >\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\tclass=\"jet-checkboxes-list__input\"\n\t\t\tname=\"product_cat\"\n\t\t\tvalue=\"607\"\n\t\t\tdata-label=\"\u00c0 Tartiner\"\n\t\t\taria-label=\"\u00c0 Tartiner\"\n\t\t\t\t\t>\n\t\t<div class=\"jet-checkboxes-list__button\">\n\t\t\t\t\t\t\t<span class=\"jet-checkboxes-list__decorator\">\n\t\t\t\t\t<i class=\"jet-checkboxes-list__checked-icon\"><svg width=\"28\" height=\"28\" viewBox=\"0 0 28 28\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t<path d=\"M26.109 8.844c0 0.391-0.156 0.781-0.438 1.062l-13.438 13.438c-0.281 0.281-0.672 0.438-1.062 0.438s-0.781-0.156-1.062-0.438l-7.781-7.781c-0.281-0.281-0.438-0.672-0.438-1.062s0.156-0.781 0.438-1.062l2.125-2.125c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l4.594 4.609 10.25-10.266c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l2.125 2.125c0.281 0.281 0.438 0.672 0.438 1.062z\"><\/path>\n<\/svg>\n<\/i>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"jet-checkboxes-list__label\">\u00c0 Tartiner<\/span>\n\t\t\t<span class=\"jet-filters-counter\"><span class=\"counter-prefix\">(<\/span><span class=\"value\">0<\/span><span class=\"counter-suffix\">)<\/span><\/span>\t\t<\/div>\n\t<\/label>\n<\/div><\/div>\n<div class=\"jet-checkboxes-list__row jet-filter-row\">\n\t\t<label class=\"jet-checkboxes-list__item\" >\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\tclass=\"jet-checkboxes-list__input\"\n\t\t\tname=\"product_cat\"\n\t\t\tvalue=\"241\"\n\t\t\tdata-label=\"Non class\u00e9\"\n\t\t\taria-label=\"Non class\u00e9\"\n\t\t\t\t\t>\n\t\t<div class=\"jet-checkboxes-list__button\">\n\t\t\t\t\t\t\t<span class=\"jet-checkboxes-list__decorator\">\n\t\t\t\t\t<i class=\"jet-checkboxes-list__checked-icon\"><svg width=\"28\" height=\"28\" viewBox=\"0 0 28 28\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t<path d=\"M26.109 8.844c0 0.391-0.156 0.781-0.438 1.062l-13.438 13.438c-0.281 0.281-0.672 0.438-1.062 0.438s-0.781-0.156-1.062-0.438l-7.781-7.781c-0.281-0.281-0.438-0.672-0.438-1.062s0.156-0.781 0.438-1.062l2.125-2.125c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l4.594 4.609 10.25-10.266c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l2.125 2.125c0.281 0.281 0.438 0.672 0.438 1.062z\"><\/path>\n<\/svg>\n<\/i>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"jet-checkboxes-list__label\">Non class\u00e9<\/span>\n\t\t\t<span class=\"jet-filters-counter\"><span class=\"counter-prefix\">(<\/span><span class=\"value\">0<\/span><span class=\"counter-suffix\">)<\/span><\/span>\t\t<\/div>\n\t<\/label>\n<\/div><div class=\"jet-checkboxes-list__row jet-filter-row\">\n\t\t<label class=\"jet-checkboxes-list__item\" >\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\tclass=\"jet-checkboxes-list__input\"\n\t\t\tname=\"product_cat\"\n\t\t\tvalue=\"46\"\n\t\t\tdata-label=\"Nos produits festifs\"\n\t\t\taria-label=\"Nos produits festifs\"\n\t\t\t\t\t>\n\t\t<div class=\"jet-checkboxes-list__button\">\n\t\t\t\t\t\t\t<span class=\"jet-checkboxes-list__decorator\">\n\t\t\t\t\t<i class=\"jet-checkboxes-list__checked-icon\"><svg width=\"28\" height=\"28\" viewBox=\"0 0 28 28\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t<path d=\"M26.109 8.844c0 0.391-0.156 0.781-0.438 1.062l-13.438 13.438c-0.281 0.281-0.672 0.438-1.062 0.438s-0.781-0.156-1.062-0.438l-7.781-7.781c-0.281-0.281-0.438-0.672-0.438-1.062s0.156-0.781 0.438-1.062l2.125-2.125c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l4.594 4.609 10.25-10.266c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l2.125 2.125c0.281 0.281 0.438 0.672 0.438 1.062z\"><\/path>\n<\/svg>\n<\/i>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"jet-checkboxes-list__label\">Nos produits festifs<\/span>\n\t\t\t<span class=\"jet-filters-counter\"><span class=\"counter-prefix\">(<\/span><span class=\"value\">0<\/span><span class=\"counter-suffix\">)<\/span><\/span>\t\t<\/div>\n\t<\/label>\n<\/div><div class=\"jet-checkboxes-list__row jet-filter-row\">\n\t\t<label class=\"jet-checkboxes-list__item\" >\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\tclass=\"jet-checkboxes-list__input\"\n\t\t\tname=\"product_cat\"\n\t\t\tvalue=\"47\"\n\t\t\tdata-label=\"Offres du moment\"\n\t\t\taria-label=\"Offres du moment\"\n\t\t\t\t\t>\n\t\t<div class=\"jet-checkboxes-list__button\">\n\t\t\t\t\t\t\t<span class=\"jet-checkboxes-list__decorator\">\n\t\t\t\t\t<i class=\"jet-checkboxes-list__checked-icon\"><svg width=\"28\" height=\"28\" viewBox=\"0 0 28 28\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t<path d=\"M26.109 8.844c0 0.391-0.156 0.781-0.438 1.062l-13.438 13.438c-0.281 0.281-0.672 0.438-1.062 0.438s-0.781-0.156-1.062-0.438l-7.781-7.781c-0.281-0.281-0.438-0.672-0.438-1.062s0.156-0.781 0.438-1.062l2.125-2.125c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l4.594 4.609 10.25-10.266c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l2.125 2.125c0.281 0.281 0.438 0.672 0.438 1.062z\"><\/path>\n<\/svg>\n<\/i>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"jet-checkboxes-list__label\">Offres du moment<\/span>\n\t\t\t<span class=\"jet-filters-counter\"><span class=\"counter-prefix\">(<\/span><span class=\"value\">0<\/span><span class=\"counter-suffix\">)<\/span><\/span>\t\t<\/div>\n\t<\/label>\n<\/div><div class=\"jet-checkboxes-list__row jet-filter-row\">\n\t\t<label class=\"jet-checkboxes-list__item\" >\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\tclass=\"jet-checkboxes-list__input\"\n\t\t\tname=\"product_cat\"\n\t\t\tvalue=\"91\"\n\t\t\tdata-label=\"P\u00e2ques\"\n\t\t\taria-label=\"P\u00e2ques\"\n\t\t\t\t\t>\n\t\t<div class=\"jet-checkboxes-list__button\">\n\t\t\t\t\t\t\t<span class=\"jet-checkboxes-list__decorator\">\n\t\t\t\t\t<i class=\"jet-checkboxes-list__checked-icon\"><svg width=\"28\" height=\"28\" viewBox=\"0 0 28 28\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t<path d=\"M26.109 8.844c0 0.391-0.156 0.781-0.438 1.062l-13.438 13.438c-0.281 0.281-0.672 0.438-1.062 0.438s-0.781-0.156-1.062-0.438l-7.781-7.781c-0.281-0.281-0.438-0.672-0.438-1.062s0.156-0.781 0.438-1.062l2.125-2.125c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l4.594 4.609 10.25-10.266c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l2.125 2.125c0.281 0.281 0.438 0.672 0.438 1.062z\"><\/path>\n<\/svg>\n<\/i>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"jet-checkboxes-list__label\">P\u00e2ques<\/span>\n\t\t\t<span class=\"jet-filters-counter\"><span class=\"counter-prefix\">(<\/span><span class=\"value\">0<\/span><span class=\"counter-suffix\">)<\/span><\/span>\t\t<\/div>\n\t<\/label>\n<\/div><\/div><\/fieldset><\/div>\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-777a402 elementor-widget elementor-widget-html\" data-id=\"777a402\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t    <script>\n    jQuery(document).ready(function($) {\n        \/\/ Trigger when filters complete (generic fallback event)\n        $(document).on('ajaxComplete', function() {\n            $.ajax({\n                url: '<?php echo admin_url('admin-ajax.php'); ?>',\n                type: 'POST',\n                data: {\n                    action: 'gds_update_product_count'\n                },\n                success: function(response) {\n                    $('#gds-product-count').html(response);\n                }\n            });\n        });\n\n        \/\/ Example: if using WOOF filter plugin\n        $(document).on('woof_ajax_done', function() {\n            $.ajax({\n                url: '<?php echo admin_url('admin-ajax.php'); ?>',\n                type: 'POST',\n                data: {\n                    action: 'gds_update_product_count'\n                },\n                success: function(response) {\n                    $('#gds-product-count').html(response);\n                }\n            });\n        });\n\n        \/\/ Example: if using YITH AJAX Filters\n        $(document).on('yith-wcan-ajax-filtered', function() {\n            $.ajax({\n                url: '<?php echo admin_url('admin-ajax.php'); ?>',\n                type: 'POST',\n                data: {\n                    action: 'gds_update_product_count'\n                },\n                success: function(response) {\n                    $('#gds-product-count').html(response);\n                }\n            });\n        });\n    });\n    <\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/aside>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-a14c6f5\" data-id=\"a14c6f5\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-90a7f28 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"90a7f28\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-fdb7239\" data-id=\"fdb7239\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-fbccfb2 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"fbccfb2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a4e1134 elementor-widget__width-initial elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"a4e1134\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-541e441 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"541e441\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-8c26e2f\" data-id=\"8c26e2f\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-8e82dc2 elementor-widget__width-initial elementor-widget elementor-widget-jet-smart-filters-sorting\" data-id=\"8e82dc2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"jet-smart-filters-sorting.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"jet-smart-filters-sorting jet-filter\"><div class=\"jet-sorting jet-sorting--flex-row\"  data-smart-filter=\"sorting\" data-query-type=\"sort\" data-query-var=\"standard\" data-content-provider=\"epro-loop-builder\" data-query-id=\"product_grid\" data-apply-type=\"ajax\" data-apply-on=\"value\" data-additional-providers=\"\">\n\t\t\t<div class=\"jet-sorting-label\">Trier par :<\/div>\n\t\t<select\n\t\tclass=\"jet-sorting-select\"\n\t\tname=\"select-name\"\n\t\t\t\taria-label=\"Trier par :\"\n\t>\n\t\t\t\t\t<option value=\"\">Pertinence<\/option>\n\t\t\t\t\t\t\t\t\t\t<option\n\t\t\t\tvalue=\"{&quot;orderby&quot;:&quot;sales_number&quot;,&quot;order&quot;:&quot;ASC&quot;}\"\n\t\t\t\t\t\t\t>Meilleures ventes<\/option>\n\t\t\t\t\t\t\t\t<option\n\t\t\t\tvalue=\"{&quot;orderby&quot;:&quot;title&quot;,&quot;order&quot;:&quot;DESC&quot;}\"\n\t\t\t\t\t\t\t>Nom, A \u00e0 Z<\/option>\n\t\t\t\t\t\t\t\t<option\n\t\t\t\tvalue=\"{&quot;orderby&quot;:&quot;name&quot;,&quot;order&quot;:&quot;ASC&quot;}\"\n\t\t\t\t\t\t\t>Nom, Z \u00e0 A<\/option>\n\t\t\t\t\t\t\t\t<option\n\t\t\t\tvalue=\"{&quot;orderby&quot;:&quot;price&quot;,&quot;order&quot;:&quot;ASC&quot;}\"\n\t\t\t\t\t\t\t>Prix, croissant<\/option>\n\t\t\t\t\t\t\t\t<option\n\t\t\t\tvalue=\"{&quot;orderby&quot;:&quot;price&quot;,&quot;order&quot;:&quot;DESC&quot;}\"\n\t\t\t\t\t\t\t>Prix, d\u00e9croissant<\/option>\n\t\t\t<\/select>\n<\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0234d06 elementor-mobile-align-center elementor-widget-tablet__width-auto elementor-widget-mobile__width-auto elementor-hidden-desktop show_filter elementor-widget elementor-widget-button\" data-id=\"0234d06\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"#\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Filter<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-630b0fd elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"630b0fd\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-c20a034\" data-id=\"c20a034\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-7864bfb elementor-hidden-mobile elementor-widget elementor-widget-jet-smart-filters-active hide-widget\" data-id=\"7864bfb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"jet-smart-filters-active.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"jet-smart-filters-active jet-active-filters jet-filter\" data-label=\"Filtres actifs\" data-content-provider=\"epro-loop-builder\" data-additional-providers=\"\" data-apply-type=\"ajax\" data-query-id=\"product_grid\"><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<div class=\"woocommerce elementor-element elementor-element-e5a70eb elementor-grid-1 elementor-grid-tablet-2 elementor-grid-mobile-1 elementor-widget elementor-widget-loop-grid\" data-id=\"e5a70eb\" data-element_type=\"widget\" data-e-type=\"widget\" id=\"product_grid\" data-settings=\"{&quot;_skin&quot;:&quot;product&quot;,&quot;template_id&quot;:15038,&quot;columns&quot;:1,&quot;pagination_type&quot;:&quot;prev_next&quot;,&quot;columns_tablet&quot;:&quot;2&quot;,&quot;columns_mobile&quot;:&quot;1&quot;,&quot;edit_handle_selector&quot;:&quot;[data-elementor-type=\\&quot;loop-item\\&quot;]&quot;,&quot;pagination_load_type&quot;:&quot;page_reload&quot;,&quot;row_gap&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;row_gap_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;row_gap_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}\" data-widget_type=\"loop-grid.product\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-loop-container elementor-grid\" role=\"list\">\n\t\t<style id=\"loop-15038\">.elementor-15038 .elementor-element.elementor-element-9e1c566:not(.elementor-motion-effects-element-type-background), .elementor-15038 .elementor-element.elementor-element-9e1c566 > .elementor-motion-effects-container > .elementor-motion-effects-layer{background-color:#F2F2F2;}.elementor-15038 .elementor-element.elementor-element-9e1c566, .elementor-15038 .elementor-element.elementor-element-9e1c566 > .elementor-background-overlay{border-radius:4px 4px 4px 4px;}.elementor-15038 .elementor-element.elementor-element-9e1c566{transition:background 0.3s, border 0.3s, border-radius 0.3s, box-shadow 0.3s;padding:10px 10px 10px 10px;}.elementor-15038 .elementor-element.elementor-element-9e1c566 > .elementor-background-overlay{transition:background 0.3s, border-radius 0.3s, opacity 0.3s;}.elementor-bc-flex-widget .elementor-15038 .elementor-element.elementor-element-07cb087.elementor-column .elementor-widget-wrap{align-items:center;}.elementor-15038 .elementor-element.elementor-element-07cb087.elementor-column.elementor-element[data-element_type=\"column\"] > .elementor-widget-wrap.elementor-element-populated{align-content:center;align-items:center;}.elementor-15038 .elementor-element.elementor-element-07cb087.elementor-column > .elementor-widget-wrap{justify-content:flex-start;}.elementor-15038 .elementor-element.elementor-element-07cb087 > .elementor-widget-wrap > .elementor-widget:not(.elementor-widget__width-auto):not(.elementor-widget__width-initial):not(:last-child):not(.elementor-absolute){margin-block-end:9px;}.elementor-15038 .elementor-element.elementor-element-07cb087 > .elementor-element-populated{padding:0px 0px 0px 0px;}.elementor-widget-image .widget-image-caption{color:var( --e-global-color-text );font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );}.elementor-15038 .elementor-element.elementor-element-4d8507a{text-align:start;}.elementor-15038 .elementor-element.elementor-element-4d8507a img{width:90px;}.elementor-15038 .elementor-element.elementor-element-fcf2dd6{padding:0px 20px 0px 0px;}.elementor-15038 .elementor-element.elementor-element-0a08ab7 > .elementor-widget-wrap > .elementor-widget:not(.elementor-widget__width-auto):not(.elementor-widget__width-initial):not(:last-child):not(.elementor-absolute){margin-block-end:8px;}.elementor-15038 .elementor-element.elementor-element-0a08ab7 > .elementor-element-populated{padding:0px 0px 0px 0px;}.elementor-widget-heading .elementor-heading-title{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );color:var( --e-global-color-primary );}.elementor-15038 .elementor-element.elementor-element-2fe45fb{text-align:start;}.elementor-15038 .elementor-element.elementor-element-2fe45fb .elementor-heading-title{font-family:\"OswaldStencil\", Sans-serif;font-size:20px;font-weight:700;line-height:20px;}.elementor-15038 .elementor-element.elementor-element-1b84187{text-align:start;}.elementor-15038 .elementor-element.elementor-element-1b84187 .elementor-heading-title{font-family:\"Poppins\", Sans-serif;font-size:20px;font-weight:700;line-height:20px;color:var( --e-global-color-df07a3b );}.elementor-bc-flex-widget .elementor-15038 .elementor-element.elementor-element-bcff654.elementor-column .elementor-widget-wrap{align-items:center;}.elementor-15038 .elementor-element.elementor-element-bcff654.elementor-column.elementor-element[data-element_type=\"column\"] > .elementor-widget-wrap.elementor-element-populated{align-content:center;align-items:center;}.elementor-15038 .elementor-element.elementor-element-bcff654.elementor-column > .elementor-widget-wrap{justify-content:flex-end;}.elementor-15038 .elementor-element.elementor-element-bcff654 > .elementor-widget-wrap > .elementor-widget:not(.elementor-widget__width-auto):not(.elementor-widget__width-initial):not(:last-child):not(.elementor-absolute){margin-block-end:8px;}.elementor-15038 .elementor-element.elementor-element-bcff654 > .elementor-element-populated{padding:0px 0px 0px 0px;}.elementor-15038 .elementor-element.elementor-element-b50b6c1 > .elementor-widget-container{margin:0px 0px 0px 0px;padding:0px 0px 0px 0px;}.elementor-15038 .elementor-element.elementor-element-b50b6c1{width:auto;max-width:auto;}.elementor-widget-woocommerce-product-add-to-cart .added_to_cart{font-family:var( --e-global-typography-accent-font-family ), Sans-serif;font-weight:var( --e-global-typography-accent-font-weight );}.elementor-15038 .elementor-element.elementor-element-ba5e656 .cart button, .elementor-15038 .elementor-element.elementor-element-ba5e656 .cart .button{font-family:\"OswaldStencil\", Sans-serif;font-size:1em;font-weight:400;line-height:1.25em;border-style:none;border-radius:0px 0px 0px 0px;padding:8px 20px 8px 020px;color:var( --e-global-color-12c3062 );background-color:#B92515;transition:all 0.2s;}.elementor-15038 .elementor-element.elementor-element-ba5e656 .cart button:hover, .elementor-15038 .elementor-element.elementor-element-ba5e656 .cart .button:hover{background-color:var( --e-global-color-737883f );}.elementor-15038 .elementor-element.elementor-element-ba5e656 .added_to_cart{color:var( --e-global-color-6745966 );font-family:var( --e-global-typography-84635c1-font-family ), Sans-serif;font-size:var( --e-global-typography-84635c1-font-size );font-weight:var( --e-global-typography-84635c1-font-weight );line-height:var( --e-global-typography-84635c1-line-height );letter-spacing:var( --e-global-typography-84635c1-letter-spacing );word-spacing:var( --e-global-typography-84635c1-word-spacing );}.elementor-15038 .elementor-element.elementor-element-ba5e656{--button-spacing:5px;width:auto;max-width:auto;}.elementor-15038 .elementor-element.elementor-element-ba5e656 .quantity .qty{font-family:var( --e-global-typography-84635c1-font-family ), Sans-serif;font-size:var( --e-global-typography-84635c1-font-size );font-weight:var( --e-global-typography-84635c1-font-weight );line-height:var( --e-global-typography-84635c1-line-height );letter-spacing:var( --e-global-typography-84635c1-letter-spacing );word-spacing:var( --e-global-typography-84635c1-word-spacing );border-style:solid;border-width:1px 1px 1px 1px;border-radius:0px 0px 0px 0px;padding:5px 5px 5px 5px;color:var( --e-global-color-6745966 );border-color:#232323;transition:all 0.2s;}.elementor-15038 .elementor-element.elementor-element-ba5e656 .quantity .qty:focus{border-color:var( --e-global-color-6745966 );}.woocommerce .elementor-15038 .elementor-element.elementor-element-ba5e656 form.cart .variations{width:100%;margin-bottom:0px;}.woocommerce .elementor-15038 .elementor-element.elementor-element-ba5e656 form.cart table.variations tr th, .woocommerce .elementor-15038 .elementor-element.elementor-element-ba5e656 form.cart table.variations tr td{padding-top:calc( 16px\/2 );padding-bottom:calc( 16px\/2 );}.woocommerce .elementor-15038 .elementor-element.elementor-element-ba5e656 form.cart table.variations td.value select, .woocommerce .elementor-15038 .elementor-element.elementor-element-ba5e656 form.cart table.variations td.value:before{background-color:#02010100;border:1px solid #02010100;border-radius:0px;}.elementor-15038 .elementor-element.elementor-element-ba5e656 > .elementor-widget-container{margin:0em 0em 0em 0em;}@media(max-width:1024px){.elementor-15038 .elementor-element.elementor-element-ba5e656 .added_to_cart{font-size:var( --e-global-typography-84635c1-font-size );line-height:var( --e-global-typography-84635c1-line-height );letter-spacing:var( --e-global-typography-84635c1-letter-spacing );word-spacing:var( --e-global-typography-84635c1-word-spacing );}.elementor-15038 .elementor-element.elementor-element-ba5e656 .quantity .qty{font-size:var( --e-global-typography-84635c1-font-size );line-height:var( --e-global-typography-84635c1-line-height );letter-spacing:var( --e-global-typography-84635c1-letter-spacing );word-spacing:var( --e-global-typography-84635c1-word-spacing );}}@media(max-width:767px){.elementor-15038 .elementor-element.elementor-element-4d8507a img{width:100%;}.elementor-15038 .elementor-element.elementor-element-4d8507a > .elementor-widget-container{margin:0px 0px 10px 0px;}.elementor-15038 .elementor-element.elementor-element-fcf2dd6{margin-top:0px;margin-bottom:016px;}.elementor-15038 .elementor-element.elementor-element-bcff654.elementor-column > .elementor-widget-wrap{justify-content:flex-start;}.elementor-15038 .elementor-element.elementor-element-ba5e656 .added_to_cart{font-size:var( --e-global-typography-84635c1-font-size );line-height:var( --e-global-typography-84635c1-line-height );letter-spacing:var( --e-global-typography-84635c1-letter-spacing );word-spacing:var( --e-global-typography-84635c1-word-spacing );}.elementor-15038 .elementor-element.elementor-element-ba5e656 .quantity .qty{font-size:var( --e-global-typography-84635c1-font-size );line-height:var( --e-global-typography-84635c1-line-height );letter-spacing:var( --e-global-typography-84635c1-letter-spacing );word-spacing:var( --e-global-typography-84635c1-word-spacing );}}\/* Start custom CSS for image, class: .elementor-element-4d8507a *\/.elementor-15038 .elementor-element.elementor-element-4d8507a{\n    flex: 120px 0 0;\n}\n\n\n.elementor-15038 .elementor-element.elementor-element-4d8507a:before {\n        background-image: url(https:\/\/graindesail.store\/wp-content\/uploads\/2024\/12\/border-bottom-4.svg);\n        background-repeat: no-repeat;\n        background-size: 300%;\n        content: \"\";\n        position: absolute;\n        bottom: 0;\n        left: 0;\n        width: 100%;\n        height: 50px;\n        background-position: center bottom;\n        z-index: -1;\n\n       \n}\n\n\n@media only screen and (max-width: 767px) {\n  .elementor-15038 .elementor-element.elementor-element-4d8507a{\n    flex: calc(100% - 0px) 0 0;\n}\n}\/* End custom CSS *\/\n\/* Start custom CSS for section, class: .elementor-element-fcf2dd6 *\/.elementor-15038 .elementor-element.elementor-element-fcf2dd6{\n    flex: calc(50% - 120px) 0 0;\n}\n\n@media only screen and (max-width: 767px) {\n  .elementor-15038 .elementor-element.elementor-element-fcf2dd6{\n    flex: calc(100% - 0px) 0 0;\n}\n}\/* End custom CSS *\/\n\/* Start custom CSS for shortcode, class: .elementor-element-b50b6c1 *\/.elementor-15038 .elementor-element.elementor-element-b50b6c1 svg{\n    width: 24px;\n   \n}\n\n.elementor-15038 .elementor-element.elementor-element-b50b6c1 span.product-stock {\n    display: flex;\n    align-items: center;\n    gap: 2px\n}\n\n.elementor-15038 .elementor-element.elementor-element-b50b6c1 span.product-stock {\n    \n    color: var(--e-global-color-6745966);\n    font-family: var(--e-global-typography-84635c1-font-family), Sans-serif;\n    font-size: var(--e-global-typography-84635c1-font-size);\n    font-weight: var(--e-global-typography-84635c1-font-weight);\n    line-height: var(--e-global-typography-84635c1-line-height);\n}\n\n\n.elementor-15038 .elementor-element.elementor-element-b50b6c1{\n        \n        padding: 2px 10px 2px 5px;\n        background-color: #FFC729;\n        border-radius: 5px;\n        color: #232323;\n        font-weight: 400;\n        text-transform: uppercase;\n}\n\nsvg.e-font-icon-svg.e-fas-ban {\n    margin: 0 !important;\n}\/* End custom CSS *\/\n\/* Start custom CSS for woocommerce-product-add-to-cart, class: .elementor-element-ba5e656 *\/.elementor-15038 .elementor-element.elementor-element-ba5e656 p.stock.in-stock {\n    display: none;\n}\n\n.elementor-15038 .elementor-element.elementor-element-ba5e656 button.single_add_to_cart_button.button.alt {\n    margin: 0 !important;\n}\n\n.elementor-15038 .elementor-element.elementor-element-ba5e656 .quantity {\n    margin: 0 10px 0 0 !important;\n}\n\n\nspan.xoo-cp-icon-check.xoo-cp-added:before {\n    display: none;\n}\n\na.added_to_cart.wc-forward {\n    display: none;\n}\n\n.ppc-button-wrapper {\n    display: none\n}\n\n\nbutton.minus, button.plus {\n    margin: 0 !important;\n     padding: 0 3px !important;\n     background: transparent !important\n    \n}\n\nbutton.plus:hover, button.minus:hover {\n    background: #f1f1f !important;\n}\n\n\n.yith-wcwl-add-button{\n    margin: 0 0 0 20px !important;\n    display: flex ;\n    align-items: center;\n    justify-content: center;\n    width: 40px;\n    height: 40px;\n    border-radius: 50% !important;\n    box-shadow: 0.125rem -0.125rem 0.25rem 0 rgba(0, 0, 0, 0.2)!important;\n    border-width: 2px;\n}\n\ni.yith-wcwl-icon.fa.fa-heart-o, i.yith-wcwl-icon.fa.fa-heart {\n    margin: 0;\n    color: #7a7a7a;\n    font-size: 24px;\n}\n\n.yith-wcwl-add-to-wishlist {\n    margin: 0;\n    display: flex;\n}\n\np.stock.out-of-stock {\n    font-size: 16px;\n    font-weight: 600;\n    margin: 0;\n}\n\n:is(.elementor-widget-woocommerce-product-add-to-cart,.woocommerce div.product .elementor-widget-woocommerce-product-add-to-cart,.elementor-widget-wc-add-to-cart,.woocommerce div.product .elementor-widget-wc-add-to-cart) .quantity .qty {\n\n    height: auto !important;\n}\n\n.yith-wcwl-popup-footer {\n    display: flex;\n    align-items: center;\n    justify-content: flex-end;\n    margin: 16px 0 0;\n}\n\na.wishlist-submit.popup_button.add_to_wishlist.single_add_to_wishlist {\n    font-family: var( --e-global-typography-52d41d6-font-family ), Sans-serif;\n    font-size: 1.25em;\n    border-radius: 0px 0px 0px 0px;\n    padding: 8px 20px;\n    color: #FFFFFF;\n    background-color: #b92515;\n    transition: all 0.2s;\n}\n\n\n.woocommerce-variation.single_variation {\n    display: none !important;\n}\n\nth.label {\n    padding: 0 0 !important;\n    margin: 10px 0;\n    color: #232323;\n    text-transform: uppercase;\n}\n\na.reset_variations {\n    display: none !important;\n}\n\n\ntd.value.disable-to-select {\n    padding: 0 !important;\n    margin: 0 0 10px;\n}\n\n.cfvsw-swatches-option.cfvsw-image-option {\n    opacity: .75;\n    border-width: 2px;\n}\n\n.cfvsw-swatches-option.cfvsw-image-option.cfvsw-selected-swatch {\n    opacity: 1;\n}\n\n.elementor-15038 .elementor-element.elementor-element-ba5e656 .custom-qty-wrapper {\n    background: white;\n}\n\n\na.added_to_cart.wc-forward{\n    display: none !important;\n}\n\n\n.qty-btn-plus, .qty-btn-minus, .e-loop-add-to-cart-form .qty-btn-plus, .e-loop-add-to-cart-form .qty-btn-minus {\n    padding: 0 3px !important;\n    margin: 0 !important;\n}\/* End custom CSS *\/\n\/* Start custom CSS for column, class: .elementor-element-bcff654 *\/.elementor-15038 .elementor-element.elementor-element-bcff654 .elementor-element-populated{\n    gap: 16px\n}\/* End custom CSS *\/\n\/* Start custom CSS for section, class: .elementor-element-023b0c6 *\/.elementor-15038 .elementor-element.elementor-element-023b0c6{\n    flex: 50% 0 0;\n}\n\n@media only screen and (max-width: 767px) {\n  .elementor-15038 .elementor-element.elementor-element-023b0c6{\n    flex: calc(100% - 0px) 0 0;\n}\n}\/* End custom CSS *\/<\/style>\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-24499 post-24499 product type-product status-publish has-post-thumbnail product_cat-cafes product_cat-cafes-en-grains first instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"1749\" height=\"1749\" src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/Visuel-Ethiopie-Sidamo-500G.jpg\" class=\"attachment-full size-full wp-image-27222\" alt=\"Sachet de caf\u00e9 Ethiopie Sidamo 500G\" srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/Visuel-Ethiopie-Sidamo-500G.jpg 1749w, https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/Visuel-Ethiopie-Sidamo-500G-300x300.jpg 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/Visuel-Ethiopie-Sidamo-500G-1024x1024.jpg 1024w, https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/Visuel-Ethiopie-Sidamo-500G-150x150.jpg 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/Visuel-Ethiopie-Sidamo-500G-768x768.jpg 768w, https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/Visuel-Ethiopie-Sidamo-500G-1536x1536.jpg 1536w, https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/Visuel-Ethiopie-Sidamo-500G-595xh.jpg 595w, https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/Visuel-Ethiopie-Sidamo-500G-600x600.jpg 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/Visuel-Ethiopie-Sidamo-500G-100x100.jpg 100w\" sizes=\"(max-width: 1749px) 100vw, 1749px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Caf\u00e9 Ethiopie Sidamo &#8211; 500G &#8211; BIO &#8211; en Grains<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">15,60&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9c9ca6c\">\n            quantit\u00e9 de Caf\u00e9 Ethiopie Sidamo - 500G - BIO - en Grains        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9c9ca6c\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"30\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=24499\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_24499\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"24499\" data-product_sku=\"Caf\u00e9_SP\u00c9_Ethiopie_Sidamo_500G_Grains\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Caf\u00e9 Ethiopie Sidamo - 500G - BIO - en Grains&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Caf\u00e9 Ethiopie Sidamo - 500G - BIO - en Grains\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_24499\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-23752 post-23752 product type-product status-publish has-post-thumbnail product_cat-cafes product_cat-cafes-en-grains  instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"600\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/pack-cafes-grains-x4-grain-de-sail-bio-sans-fond.png\" class=\"attachment-full size-full wp-image-23806 lazyload\" alt=\"Pack de 4 caf\u00e9s en grains Grain de Sail - Sans Fond\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/pack-cafes-grains-x4-grain-de-sail-bio-sans-fond.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/pack-cafes-grains-x4-grain-de-sail-bio-sans-fond-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/pack-cafes-grains-x4-grain-de-sail-bio-sans-fond-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/pack-cafes-grains-x4-grain-de-sail-bio-sans-fond-100x100.png 100w\" data-sizes=\"(max-width: 600px) 100vw, 600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 600px; --smush-placeholder-aspect-ratio: 600\/600;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Pack de 4 caf\u00e9s Grains<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">49,00&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9ca1e78\">\n            quantit\u00e9 de Pack de 4 caf\u00e9s Grains        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9ca1e78\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"33\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=23752\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_23752\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"23752\" data-product_sku=\"Pack_4_Caf\u00e9s_GP_Grains-\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Pack de 4 caf\u00e9s Grains&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Pack de 4 caf\u00e9s Grains\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_23752\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-23750 post-23750 product type-product status-publish has-post-thumbnail product_cat-cafes product_cat-cafe-moulu  instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"600\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/pack-cafes-moulus-x4-grain-de-sail-bio-sans-fond.png\" class=\"attachment-full size-full wp-image-23804 lazyload\" alt=\"Pack de 4 caf\u00e9s moulus Grain de Sail - Sans fond\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/pack-cafes-moulus-x4-grain-de-sail-bio-sans-fond.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/pack-cafes-moulus-x4-grain-de-sail-bio-sans-fond-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/pack-cafes-moulus-x4-grain-de-sail-bio-sans-fond-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/pack-cafes-moulus-x4-grain-de-sail-bio-sans-fond-100x100.png 100w\" data-sizes=\"(max-width: 600px) 100vw, 600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 600px; --smush-placeholder-aspect-ratio: 600\/600;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Pack 4 caf\u00e9s Moulus<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">25,50&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9ca6ffa\">\n            quantit\u00e9 de Pack 4 caf\u00e9s Moulus        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9ca6ffa\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"46\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=23750\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_23750\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"23750\" data-product_sku=\"Pack_4_Caf\u00e9s_GP_Moulus-\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Pack 4 caf\u00e9s Moulus&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Pack 4 caf\u00e9s Moulus\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_23750\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-22564 post-22564 product type-product status-publish has-post-thumbnail product_cat-chocolat product_cat-chocolat-tablette last instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"422\" height=\"774\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-NOIR-CAFE-2026-10ANS-RECTO-BD.png\" class=\"attachment-full size-full wp-image-23937 lazyload\" alt=\"Tablette Noir Caf\u00e9 - Bandeau 10 ans\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-NOIR-CAFE-2026-10ANS-RECTO-BD.png 422w, https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-NOIR-CAFE-2026-10ANS-RECTO-BD-164x300.png 164w\" data-sizes=\"(max-width: 422px) 100vw, 422px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 422px; --smush-placeholder-aspect-ratio: 422\/774;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Noir et Caf\u00e9<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">3,65&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9cac23e\">\n            quantit\u00e9 de Noir et Caf\u00e9        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9cac23e\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"335\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=22564\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_22564\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"22564\" data-product_sku=\"TAB_NOIR_CAFE\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Noir et Caf\u00e9&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Noir et Caf\u00e9\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_22564\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-21887 post-21887 product type-product status-publish has-post-thumbnail product_cat-coffrets first instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"1920\" height=\"2560\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/12\/IMG_1893-scaled.jpg\" class=\"attachment-full size-full wp-image-21888 lazyload\" alt=\"Coffret L&#039;Hisse et Ho\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/12\/IMG_1893-scaled.jpg 1920w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/12\/IMG_1893-225x300.jpg 225w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/12\/IMG_1893-768x1024.jpg 768w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/12\/IMG_1893-1152x1536.jpg 1152w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/12\/IMG_1893-1536x2048.jpg 1536w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/12\/IMG_1893-600x800.jpg 600w\" data-sizes=\"(max-width: 1920px) 100vw, 1920px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1920px; --smush-placeholder-aspect-ratio: 1920\/2560;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">L&#8217;Hisse et ho<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">19,00&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9cb14a8\">\n            quantit\u00e9 de L&#039;Hisse et ho        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9cb14a8\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"46\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=21887\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_21887\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"21887\" data-product_sku=\"\" aria-label=\"Ajouter au panier\u00a0: &ldquo;L&#039;Hisse et ho&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0L&#039;Hisse et ho\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_21887\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-21472 post-21472 product type-product status-publish has-post-thumbnail product_cat-chocolat product_cat-gourmandises product_cat-chocolat-napolitains product_cat-gourmandises-sachets  instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"1000\" height=\"1000\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/napolitains-lait-55-sans-fond.png\" class=\"attachment-full size-full wp-image-24439 lazyload\" alt=\"Sachet de Napolitains Lait 55 - 180G - Sans fond\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/napolitains-lait-55-sans-fond.png 1000w, https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/napolitains-lait-55-sans-fond-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/napolitains-lait-55-sans-fond-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/napolitains-lait-55-sans-fond-768x768.png 768w, https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/napolitains-lait-55-sans-fond-600x600.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/napolitains-lait-55-sans-fond-100x100.png 100w\" data-sizes=\"(max-width: 1000px) 100vw, 1000px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1000px; --smush-placeholder-aspect-ratio: 1000\/1000;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Sachets de 180G de Napolitains &#8211; Lait 55%<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">5,49&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9cb6735\">\n            quantit\u00e9 de Sachets de 180G de Napolitains - Lait 55%        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9cb6735\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"156\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=21472\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_21472\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"21472\" data-product_sku=\"\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Sachets de 180G de Napolitains - Lait 55%&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Sachets de 180G de Napolitains - Lait 55%\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_21472\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-21471 post-21471 product type-product status-publish has-post-thumbnail product_cat-chocolat product_cat-gourmandises product_cat-chocolat-napolitains product_cat-gourmandises-sachets  instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"1000\" height=\"1000\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/napolitains-lait-caramel-sans-fond.png\" class=\"attachment-full size-full wp-image-24441 lazyload\" alt=\"Sachet de Napolitains Lait Caramel - 180G - Sans fond\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/napolitains-lait-caramel-sans-fond.png 1000w, https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/napolitains-lait-caramel-sans-fond-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/napolitains-lait-caramel-sans-fond-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/napolitains-lait-caramel-sans-fond-768x768.png 768w, https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/napolitains-lait-caramel-sans-fond-600x600.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/napolitains-lait-caramel-sans-fond-100x100.png 100w\" data-sizes=\"(max-width: 1000px) 100vw, 1000px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1000px; --smush-placeholder-aspect-ratio: 1000\/1000;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Sachets de 180G de Napolitains &#8211; Lait Caramel<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">5,49&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9cbb93b\">\n            quantit\u00e9 de Sachets de 180G de Napolitains - Lait Caramel        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9cbb93b\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"400\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=21471\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_21471\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"21471\" data-product_sku=\"\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Sachets de 180G de Napolitains - Lait Caramel&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Sachets de 180G de Napolitains - Lait Caramel\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_21471\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-21473 post-21473 product type-product status-publish has-post-thumbnail product_cat-chocolat product_cat-gourmandises product_cat-chocolat-napolitains product_cat-gourmandises-sachets last instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"1000\" height=\"1000\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/napolitains-noir-fleur-de-sel-sans-fond.png\" class=\"attachment-full size-full wp-image-24443 lazyload\" alt=\"Sachet de Napolitains Noir Fleur de Sel - 180G - Sans Fond\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/napolitains-noir-fleur-de-sel-sans-fond.png 1000w, https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/napolitains-noir-fleur-de-sel-sans-fond-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/napolitains-noir-fleur-de-sel-sans-fond-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/napolitains-noir-fleur-de-sel-sans-fond-768x768.png 768w, https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/napolitains-noir-fleur-de-sel-sans-fond-600x600.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/napolitains-noir-fleur-de-sel-sans-fond-100x100.png 100w\" data-sizes=\"(max-width: 1000px) 100vw, 1000px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1000px; --smush-placeholder-aspect-ratio: 1000\/1000;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Sachets de 180G de Napolitains &#8211; Noir Fleur de Sel<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">5,49&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9cc0bd9\">\n            quantit\u00e9 de Sachets de 180G de Napolitains - Noir Fleur de Sel        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9cc0bd9\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"245\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=21473\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_21473\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"21473\" data-product_sku=\"\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Sachets de 180G de Napolitains - Noir Fleur de Sel&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Sachets de 180G de Napolitains - Noir Fleur de Sel\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_21473\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-17781 post-17781 product type-product status-publish has-post-thumbnail product_cat-accessoires product_cat-moulin-a-cafe first instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"600\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-manuel-timemore-chestnut-s3.png\" class=\"attachment-full size-full wp-image-20206 lazyload\" alt=\"Moulin \u00e0 caf\u00e9 manuel Timemore Slim 3 - Ambiance\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-manuel-timemore-chestnut-s3.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-manuel-timemore-chestnut-s3-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-manuel-timemore-chestnut-s3-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-manuel-timemore-chestnut-s3-100x100.png 100w\" data-sizes=\"(max-width: 600px) 100vw, 600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 600px; --smush-placeholder-aspect-ratio: 600\/600;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">TIMEMORE Slim 3<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">139,00&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9cc5d23\">\n            quantit\u00e9 de TIMEMORE Slim 3        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9cc5d23\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"4\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=17781\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_17781\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"17781\" data-product_sku=\"\" aria-label=\"Ajouter au panier\u00a0: &ldquo;TIMEMORE Slim 3&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0TIMEMORE Slim 3\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_17781\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-17778 post-17778 product type-product status-publish has-post-thumbnail product_cat-accessoires product_cat-moulin-a-cafe  instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"600\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-manuel-chestnut-cs3-pro.png\" class=\"attachment-full size-full wp-image-20196 lazyload\" alt=\"Moulin \u00e0 caf\u00e9 manuel Timemore Chestnut C3S Pro - Ambiance\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-manuel-chestnut-cs3-pro.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-manuel-chestnut-cs3-pro-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-manuel-chestnut-cs3-pro-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-manuel-chestnut-cs3-pro-100x100.png 100w\" data-sizes=\"(max-width: 600px) 100vw, 600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 600px; --smush-placeholder-aspect-ratio: 600\/600;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">TIMEMORE Chestnut C3S Pro<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">89,90&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9ccaf5e\">\n            quantit\u00e9 de TIMEMORE Chestnut C3S Pro        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9ccaf5e\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"2\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=17778\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_17778\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"17778\" data-product_sku=\"\" aria-label=\"Ajouter au panier\u00a0: &ldquo;TIMEMORE Chestnut C3S Pro&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0TIMEMORE Chestnut C3S Pro\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_17778\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-17772 post-17772 product type-product status-publish has-post-thumbnail product_cat-accessoires product_cat-moulin-a-cafe  instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"600\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-manuel-timemore-chestnut-slim.png\" class=\"attachment-full size-full wp-image-20216 lazyload\" alt=\"Moulin \u00e0 caf\u00e9 manuel Timemore S3 - Ambiance\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-manuel-timemore-chestnut-slim.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-manuel-timemore-chestnut-slim-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-manuel-timemore-chestnut-slim-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-manuel-timemore-chestnut-slim-100x100.png 100w\" data-sizes=\"(max-width: 600px) 100vw, 600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 600px; --smush-placeholder-aspect-ratio: 600\/600;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">TIMEMORE S3<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">169,00&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9cd0264\">\n            quantit\u00e9 de TIMEMORE S3        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9cd0264\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"4\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=17772\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_17772\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"17772\" data-product_sku=\"\" aria-label=\"Ajouter au panier\u00a0: &ldquo;TIMEMORE S3&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0TIMEMORE S3\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_17772\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-17768 post-17768 product type-product status-publish has-post-thumbnail product_cat-accessoires product_cat-moulin-a-cafe last instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"600\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-automatique-wilfa-classic-aroma.png\" class=\"attachment-full size-full wp-image-20226 lazyload\" alt=\"Moulin \u00e0 caf\u00e9 \u00e9lectrique Wilfa Aroma - Ambiance\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-automatique-wilfa-classic-aroma.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-automatique-wilfa-classic-aroma-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-automatique-wilfa-classic-aroma-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-automatique-wilfa-classic-aroma-100x100.png 100w\" data-sizes=\"(max-width: 600px) 100vw, 600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 600px; --smush-placeholder-aspect-ratio: 600\/600;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">WILFA \u2013 Aroma<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">155,00&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9cd54f3\">\n            quantit\u00e9 de WILFA \u2013 Aroma        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9cd54f3\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"2\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=17768\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_17768\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"17768\" data-product_sku=\"\" aria-label=\"Ajouter au panier\u00a0: &ldquo;WILFA \u2013 Aroma&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0WILFA \u2013 Aroma\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_17768\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-17763 post-17763 product type-product status-publish has-post-thumbnail product_cat-accessoires product_cat-moulin-a-cafe first instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"600\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-manuel-hario-mini-black-pro.png\" class=\"attachment-full size-full wp-image-20158 lazyload\" alt=\"Moulin \u00e0 caf\u00e9 manuel Hario Mini Black Pro - Ambiance\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-manuel-hario-mini-black-pro.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-manuel-hario-mini-black-pro-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-manuel-hario-mini-black-pro-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-manuel-hario-mini-black-pro-100x100.png 100w\" data-sizes=\"(max-width: 600px) 100vw, 600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 600px; --smush-placeholder-aspect-ratio: 600\/600;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">HARIO &#8211; Mini Black Pro<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">69,90&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9cda751\">\n            quantit\u00e9 de HARIO - Mini Black Pro        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9cda751\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"12\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=17763\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_17763\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"17763\" data-product_sku=\"\" aria-label=\"Ajouter au panier\u00a0: &ldquo;HARIO - Mini Black Pro&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0HARIO - Mini Black Pro\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_17763\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-17760 post-17760 product type-product status-publish has-post-thumbnail product_cat-accessoires product_cat-moulin-a-cafe  instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"600\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-electrique-compact-v6-5.png\" class=\"attachment-full size-full wp-image-20188 lazyload\" alt=\"Moulin \u00e0 caf\u00e9 \u00e9lectrique Hario V60 Compact - Ambiance\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-electrique-compact-v6-5.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-electrique-compact-v6-5-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-electrique-compact-v6-5-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-electrique-compact-v6-5-100x100.png 100w\" data-sizes=\"(max-width: 600px) 100vw, 600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 600px; --smush-placeholder-aspect-ratio: 600\/600;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">HARIO V60 Compact<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">185,90&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9cdfa02\">\n            quantit\u00e9 de HARIO V60 Compact        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9cdfa02\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"2\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=17760\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_17760\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"17760\" data-product_sku=\"\" aria-label=\"Ajouter au panier\u00a0: &ldquo;HARIO V60 Compact&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0HARIO V60 Compact\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_17760\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-15611 post-15611 product type-product status-publish has-post-thumbnail product_cat-a-tartiner product_cat-gourmandises  instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"800\" height=\"800\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/09\/chocolat-sarrasin-facon-crepe-de-ble-noir220g.jpg\" class=\"attachment-full size-full wp-image-15600 lazyload\" alt=\"Tartine Chocolat Sarrasin Facon Crepe Bl\u00e9 Noir 220G\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/09\/chocolat-sarrasin-facon-crepe-de-ble-noir220g.jpg 800w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/09\/chocolat-sarrasin-facon-crepe-de-ble-noir220g-300x300.jpg 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/09\/chocolat-sarrasin-facon-crepe-de-ble-noir220g-150x150.jpg 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/09\/chocolat-sarrasin-facon-crepe-de-ble-noir220g-768x768.jpg 768w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/09\/chocolat-sarrasin-facon-crepe-de-ble-noir220g-600x600.jpg 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/09\/chocolat-sarrasin-facon-crepe-de-ble-noir220g-100x100.jpg 100w\" data-sizes=\"(max-width: 800px) 100vw, 800px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 800px; --smush-placeholder-aspect-ratio: 800\/800;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Chocolat Sarrasin &#8211; Fa\u00e7on Cr\u00eape de Bl\u00e9 noir<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">4,20&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9ce4bd0\">\n            quantit\u00e9 de Chocolat Sarrasin - Fa\u00e7on Cr\u00eape de Bl\u00e9 noir        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9ce4bd0\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"107\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=15611\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_15611\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"15611\" data-product_sku=\"\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Chocolat Sarrasin - Fa\u00e7on Cr\u00eape de Bl\u00e9 noir&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Chocolat Sarrasin - Fa\u00e7on Cr\u00eape de Bl\u00e9 noir\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_15611\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-15678 post-15678 product type-product status-publish has-post-thumbnail product_cat-ape product_cat-coffrets last instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"1331\" height=\"1186\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1924.png\" class=\"attachment-full size-full wp-image-11107 lazyload\" alt=\"Coffret de tablette de chocolat - La Totale - Composition\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1924.png 1331w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1924-300x267.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1924-1024x912.png 1024w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1924-768x684.png 768w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1924-600x535.png 600w\" data-sizes=\"(max-width: 1331px) 100vw, 1331px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1331px; --smush-placeholder-aspect-ratio: 1331\/1186;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">La totale &#8211; 17 r\u00e9f\u00e9rences<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">56,45&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9ce9cb7\">\n            quantit\u00e9 de La totale - 17 r\u00e9f\u00e9rences        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9ce9cb7\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"26\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=15678\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_15678\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"15678\" data-product_sku=\"Box_Totale_17ref\" aria-label=\"Ajouter au panier\u00a0: &ldquo;La totale - 17 r\u00e9f\u00e9rences&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0La totale - 17 r\u00e9f\u00e9rences\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_15678\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-15595 post-15595 product type-product status-publish has-post-thumbnail product_cat-a-tartiner product_cat-gourmandises first instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"800\" height=\"800\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/09\/cerise-chocolat-facon-foret-noire-220g.jpg\" class=\"attachment-full size-full wp-image-15598 lazyload\" alt=\"Tartine Cerise Chocolat Facon Foret Noire 220G\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/09\/cerise-chocolat-facon-foret-noire-220g.jpg 800w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/09\/cerise-chocolat-facon-foret-noire-220g-300x300.jpg 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/09\/cerise-chocolat-facon-foret-noire-220g-150x150.jpg 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/09\/cerise-chocolat-facon-foret-noire-220g-768x768.jpg 768w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/09\/cerise-chocolat-facon-foret-noire-220g-600x600.jpg 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/09\/cerise-chocolat-facon-foret-noire-220g-100x100.jpg 100w\" data-sizes=\"(max-width: 800px) 100vw, 800px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 800px; --smush-placeholder-aspect-ratio: 800\/800;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Cerise Chocolat &#8211; Fa\u00e7on For\u00eat Noire<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">3,50&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9ceeddf\">\n            quantit\u00e9 de Cerise Chocolat - Fa\u00e7on For\u00eat Noire        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9ceeddf\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"158\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=15595\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_15595\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"15595\" data-product_sku=\"\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Cerise Chocolat - Fa\u00e7on For\u00eat Noire&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Cerise Chocolat - Fa\u00e7on For\u00eat Noire\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_15595\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-15612 post-15612 product type-product status-publish has-post-thumbnail product_cat-a-tartiner product_cat-gourmandises  instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"800\" height=\"800\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/09\/creme-cafe-facon-eclair220g.jpg\" class=\"attachment-full size-full wp-image-15602 lazyload\" alt=\"Tartine Cr\u00e8me Caf\u00e9 Facon Eclair 220G\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/09\/creme-cafe-facon-eclair220g.jpg 800w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/09\/creme-cafe-facon-eclair220g-300x300.jpg 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/09\/creme-cafe-facon-eclair220g-150x150.jpg 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/09\/creme-cafe-facon-eclair220g-768x768.jpg 768w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/09\/creme-cafe-facon-eclair220g-600x600.jpg 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/09\/creme-cafe-facon-eclair220g-100x100.jpg 100w\" data-sizes=\"(max-width: 800px) 100vw, 800px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 800px; --smush-placeholder-aspect-ratio: 800\/800;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Cr\u00e8me Caf\u00e9 &#8211; Fa\u00e7on \u00c9clair<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">3,50&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9cf3f14\">\n            quantit\u00e9 de Cr\u00e8me Caf\u00e9 - Fa\u00e7on \u00c9clair        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9cf3f14\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"124\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=15612\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_15612\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"15612\" data-product_sku=\"\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Cr\u00e8me Caf\u00e9 - Fa\u00e7on \u00c9clair&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Cr\u00e8me Caf\u00e9 - Fa\u00e7on \u00c9clair\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_15612\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-15610 post-15610 product type-product status-publish has-post-thumbnail product_cat-a-tartiner product_cat-gourmandises  instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"800\" height=\"800\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/09\/poire-chocolat-facon-belle-helene.jpg\" class=\"attachment-full size-full wp-image-15604 lazyload\" alt=\"Tartine Poire Chocolat Facon Belle H\u00e9l\u00e8ne 220G\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/09\/poire-chocolat-facon-belle-helene.jpg 800w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/09\/poire-chocolat-facon-belle-helene-300x300.jpg 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/09\/poire-chocolat-facon-belle-helene-150x150.jpg 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/09\/poire-chocolat-facon-belle-helene-768x768.jpg 768w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/09\/poire-chocolat-facon-belle-helene-600x600.jpg 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/09\/poire-chocolat-facon-belle-helene-100x100.jpg 100w\" data-sizes=\"(max-width: 800px) 100vw, 800px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 800px; --smush-placeholder-aspect-ratio: 800\/800;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Poire Chocolat &#8211; Fa\u00e7on Belle-H\u00e9l\u00e8ne<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">3,50&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9d04e9a\">\n            quantit\u00e9 de Poire Chocolat - Fa\u00e7on Belle-H\u00e9l\u00e8ne        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9d04e9a\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"119\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=15610\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_15610\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"15610\" data-product_sku=\"\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Poire Chocolat - Fa\u00e7on Belle-H\u00e9l\u00e8ne&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Poire Chocolat - Fa\u00e7on Belle-H\u00e9l\u00e8ne\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_15610\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-11100 post-11100 product type-product status-publish has-post-thumbnail product_cat-ape product_cat-coffrets last instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"1331\" height=\"1186\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1925.png\" class=\"attachment-full size-full wp-image-11101 lazyload\" alt=\"Coffret de tablettes de chocolat - La Sensation - Composition\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1925.png 1331w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1925-300x267.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1925-1024x912.png 1024w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1925-768x684.png 768w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1925-600x535.png 600w\" data-sizes=\"(max-width: 1331px) 100vw, 1331px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1331px; --smush-placeholder-aspect-ratio: 1331\/1186;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">La Sensation<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">33,75&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9d09f83\">\n            quantit\u00e9 de La Sensation        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9d09f83\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"3\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=11100\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_11100\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"11100\" data-product_sku=\"la-sensation\" aria-label=\"Ajouter au panier\u00a0: &ldquo;La Sensation&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0La Sensation\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_11100\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-11089 post-11089 product type-product status-publish has-post-thumbnail product_cat-ape product_cat-coffrets first instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"1331\" height=\"1186\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1933.png\" class=\"attachment-full size-full wp-image-11092 lazyload\" alt=\"Coffret de tablettes de chocolat - Boite 8 D\u00e9lices Cabosse - Composition\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1933.png 1331w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1933-300x267.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1933-1024x912.png 1024w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1933-768x684.png 768w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1933-600x535.png 600w\" data-sizes=\"(max-width: 1331px) 100vw, 1331px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1331px; --smush-placeholder-aspect-ratio: 1331\/1186;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Bo\u00eete 8 D\u00e9lices Cabosse<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">27,45&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9d0f142\">\n            quantit\u00e9 de Bo\u00eete 8 D\u00e9lices Cabosse        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9d0f142\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"87\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=11089\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_11089\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"11089\" data-product_sku=\"boite8delices_cabosse\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Bo\u00eete 8 D\u00e9lices Cabosse&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Bo\u00eete 8 D\u00e9lices Cabosse\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_11089\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-10981 post-10981 product type-product status-publish has-post-thumbnail product_cat-ape product_cat-coffrets  instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"1331\" height=\"1186\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1956.png\" class=\"attachment-full size-full wp-image-10983 lazyload\" alt=\"Coffret de tablettes de chocolat - L&#039;id\u00e9al - Pochon rouge - Composition\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1956.png 1331w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1956-300x267.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1956-1024x912.png 1024w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1956-768x684.png 768w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1956-600x535.png 600w\" data-sizes=\"(max-width: 1331px) 100vw, 1331px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1331px; --smush-placeholder-aspect-ratio: 1331\/1186;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">L&#8217;Id\u00e9al<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">17,35&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9d14312\">\n            quantit\u00e9 de L&#039;Id\u00e9al        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9d14312\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"165\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=10981\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_10981\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"10981\" data-product_sku=\"L&#039;Id\u00e9al_5 tablettes\" aria-label=\"Ajouter au panier\u00a0: &ldquo;L&#039;Id\u00e9al&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0L&#039;Id\u00e9al\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_10981\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-10968 post-10968 product type-product status-publish has-post-thumbnail product_cat-ape product_cat-coffrets  instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"1331\" height=\"1186\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1954.png\" class=\"attachment-full size-full wp-image-10970 lazyload\" alt=\"Coffret de tablettes de chocolat - L&#039;\u00e9crin- Pochon rouge - Composition\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1954.png 1331w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1954-300x267.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1954-1024x912.png 1024w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1954-768x684.png 768w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1954-600x535.png 600w\" data-sizes=\"(max-width: 1331px) 100vw, 1331px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1331px; --smush-placeholder-aspect-ratio: 1331\/1186;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">L&#8217;\u00c9crin<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">10,35&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9d194cf\">\n            quantit\u00e9 de L&#039;\u00c9crin        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9d194cf\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"74\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=10968\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_10968\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"10968\" data-product_sku=\"L&#039;\u00c9crin_3 tablettes\" aria-label=\"Ajouter au panier\u00a0: &ldquo;L&#039;\u00c9crin&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0L&#039;\u00c9crin\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_10968\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-10909 post-10909 product type-product status-publish has-post-thumbnail product_cat-offres-du-moment product_cat-paques last instock sale taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"691\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/2174.png\" class=\"attachment-full size-full wp-image-10910 lazyload\" alt=\"Moulage Le Poisson - P\u00e2ques - Sans fond\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/2174.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/2174-260x300.png 260w\" data-sizes=\"(max-width: 600px) 100vw, 600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 600px; --smush-placeholder-aspect-ratio: 600\/691;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Le Poisson &#8211; 90G &#8211; BIO<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><del aria-hidden=\"true\"><span class=\"woocommerce-Price-amount amount\">5,50&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/del> <span class=\"screen-reader-text\">Le prix initial \u00e9tait\u00a0: 5,50&nbsp;&euro;.<\/span><ins aria-hidden=\"true\"><span class=\"woocommerce-Price-amount amount\">3,63&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/ins><span class=\"screen-reader-text\">Le prix actuel est\u00a0: 3,63&nbsp;&euro;.<\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9d1e9c9\">\n            quantit\u00e9 de Le Poisson - 90G - BIO        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9d1e9c9\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"56\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=10909\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_10909\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"10909\" data-product_sku=\"Poisson-chocolat\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Le Poisson - 90G - BIO&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Le Poisson - 90G - BIO\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_10909\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-10898 post-10898 product type-product status-publish has-post-thumbnail product_cat-offres-du-moment product_cat-paques first instock sale taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"683\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/2167.png\" class=\"attachment-full size-full wp-image-10899 lazyload\" alt=\"Moulage Le Poussin - P\u00e2ques - Sans fond\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/2167.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/2167-264x300.png 264w\" data-sizes=\"(max-width: 600px) 100vw, 600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 600px; --smush-placeholder-aspect-ratio: 600\/683;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Le Poussin &#8211; 90G &#8211; BIO<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><del aria-hidden=\"true\"><span class=\"woocommerce-Price-amount amount\">5,50&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/del> <span class=\"screen-reader-text\">Le prix initial \u00e9tait\u00a0: 5,50&nbsp;&euro;.<\/span><ins aria-hidden=\"true\"><span class=\"woocommerce-Price-amount amount\">3,63&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/ins><span class=\"screen-reader-text\">Le prix actuel est\u00a0: 3,63&nbsp;&euro;.<\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9d23ec9\">\n            quantit\u00e9 de Le Poussin - 90G - BIO        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9d23ec9\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"42\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=10898\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_10898\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"10898\" data-product_sku=\"Poussin-chocolat\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Le Poussin - 90G - BIO&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Le Poussin - 90G - BIO\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_10898\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-10872 post-10872 product type-product status-publish has-post-thumbnail product_cat-accessoires product_cat-accessoires-textiles  instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"1221\" height=\"1470\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/2136.png\" class=\"attachment-full size-full wp-image-10873 lazyload\" alt=\"Miki Marine - A l&#039;aise Breizh x Grain de Sail - Sans fond\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/2136.png 1221w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/2136-249x300.png 249w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/2136-851x1024.png 851w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/2136-768x925.png 768w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/2136-600x722.png 600w\" data-sizes=\"(max-width: 1221px) 100vw, 1221px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1221px; --smush-placeholder-aspect-ratio: 1221\/1470;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Miki Marine<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">29,00&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9d2904e\">\n            quantit\u00e9 de Miki Marine        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9d2904e\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"19\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=10872\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_10872\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"10872\" data-product_sku=\"miki-marine\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Miki Marine&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Miki Marine\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_10872\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-10866 post-10866 product type-product status-publish has-post-thumbnail product_cat-accessoires product_cat-accessoires-textiles  instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"1221\" height=\"1470\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/2132.png\" class=\"attachment-full size-full wp-image-10867 lazyload\" alt=\"Bonnet Marine Rayures - A l&#039;aise Breizh x Grain de Sail - Sans fond\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/2132.png 1221w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/2132-249x300.png 249w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/2132-851x1024.png 851w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/2132-768x925.png 768w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/2132-600x722.png 600w\" data-sizes=\"(max-width: 1221px) 100vw, 1221px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1221px; --smush-placeholder-aspect-ratio: 1221\/1470;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Bonnet Marine Rayures<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">29,00&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9d2e1af\">\n            quantit\u00e9 de Bonnet Marine Rayures        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9d2e1af\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"52\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=10866\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_10866\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"10866\" data-product_sku=\"bonnet-marine-rayures\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Bonnet Marine Rayures&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Bonnet Marine Rayures\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_10866\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-10860 post-10860 product type-product status-publish has-post-thumbnail product_cat-accessoires product_cat-accessoires-textiles last instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"1221\" height=\"1470\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/2127.png\" class=\"attachment-full size-full wp-image-10861 lazyload\" alt=\"Bonnet Bleu Marine - A l&#039;aise Breizh x Grain de Sail - Sans fond\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/2127.png 1221w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/2127-249x300.png 249w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/2127-851x1024.png 851w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/2127-768x925.png 768w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/2127-600x722.png 600w\" data-sizes=\"(max-width: 1221px) 100vw, 1221px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1221px; --smush-placeholder-aspect-ratio: 1221\/1470;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Bonnet Bleu Marine<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">29,00&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9d33313\">\n            quantit\u00e9 de Bonnet Bleu Marine        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9d33313\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"46\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=10860\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_10860\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"10860\" data-product_sku=\"bonnet-bleu-marine\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Bonnet Bleu Marine&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Bonnet Bleu Marine\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_10860\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-10809 post-10809 product type-product status-publish has-post-thumbnail product_cat-cafes-en-grains first instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"1749\" height=\"1749\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/Visuel-Honduras-Ceiba-500G.jpg\" class=\"attachment-full size-full wp-image-27224 lazyload\" alt=\"Sachet de caf\u00e9 Honduras Ceiba 500G\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/Visuel-Honduras-Ceiba-500G.jpg 1749w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/Visuel-Honduras-Ceiba-500G-300x300.jpg 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/Visuel-Honduras-Ceiba-500G-1024x1024.jpg 1024w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/Visuel-Honduras-Ceiba-500G-150x150.jpg 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/Visuel-Honduras-Ceiba-500G-768x768.jpg 768w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/Visuel-Honduras-Ceiba-500G-1536x1536.jpg 1536w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/Visuel-Honduras-Ceiba-500G-595xh.jpg 595w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/Visuel-Honduras-Ceiba-500G-600x600.jpg 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/Visuel-Honduras-Ceiba-500G-100x100.jpg 100w\" data-sizes=\"(max-width: 1749px) 100vw, 1749px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1749px; --smush-placeholder-aspect-ratio: 1749\/1749;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Caf\u00e9 Honduras Ceiba &#8211; 500G &#8211; BIO &#8211; en Grains<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">15,60&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9d386fa\">\n            quantit\u00e9 de Caf\u00e9 Honduras Ceiba - 500G - BIO - en Grains        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9d386fa\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"72\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=10809\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_10809\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"10809\" data-product_sku=\"Caf\u00e9_SP\u00c9_Honduras_Ceiba_500G_BIO\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Caf\u00e9 Honduras Ceiba - 500G - BIO - en Grains&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Caf\u00e9 Honduras Ceiba - 500G - BIO - en Grains\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_10809\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-10686 post-10686 product type-product status-publish has-post-thumbnail product_cat-ape product_cat-coffrets  instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"1331\" height=\"1186\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1927.png\" class=\"attachment-full size-full wp-image-10687 lazyload\" alt=\"Coffret L&#039;Essentiel - Composition sans fond\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1927.png 1331w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1927-300x267.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1927-1024x912.png 1024w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1927-768x684.png 768w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1927-600x535.png 600w\" data-sizes=\"(max-width: 1331px) 100vw, 1331px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1331px; --smush-placeholder-aspect-ratio: 1331\/1186;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Box L&#8217;Essentiel<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">13,85&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9d3d8cc\">\n            quantit\u00e9 de Box L&#039;Essentiel        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9d3d8cc\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"100\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=10686\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_10686\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"10686\" data-product_sku=\"Box_Essentiel\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Box L&#039;Essentiel&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Box L&#039;Essentiel\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_10686\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-10627 post-10627 product type-product status-publish has-post-thumbnail product_cat-ape product_cat-coffrets  instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"1331\" height=\"1186\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1931.png\" class=\"attachment-full size-full wp-image-10628 lazyload\" alt=\"Coffret La Compl\u00e8te - Composition sans fond\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1931.png 1331w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1931-300x267.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1931-1024x912.png 1024w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1931-768x684.png 768w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1931-600x535.png 600w\" data-sizes=\"(max-width: 1331px) 100vw, 1331px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1331px; --smush-placeholder-aspect-ratio: 1331\/1186;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Box La Compl\u00e8te<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">27,40&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9d42aff\">\n            quantit\u00e9 de Box La Compl\u00e8te        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9d42aff\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"107\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=10627\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_10627\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"10627\" data-product_sku=\"Box_Complete\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Box La Compl\u00e8te&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Box La Compl\u00e8te\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_10627\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-10612 post-10612 product type-product status-publish has-post-thumbnail product_cat-ape product_cat-coffrets last instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"1331\" height=\"1186\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1930.png\" class=\"attachment-full size-full wp-image-10616 lazyload\" alt=\"Coffret L&#039;Evidence - Composition sans fond\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1930.png 1331w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1930-300x267.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1930-1024x912.png 1024w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1930-768x684.png 768w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1930-600x535.png 600w\" data-sizes=\"(max-width: 1331px) 100vw, 1331px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1331px; --smush-placeholder-aspect-ratio: 1331\/1186;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Box L&#8217;Evidence<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">27,15&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9d47c78\">\n            quantit\u00e9 de Box L&#039;Evidence        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9d47c78\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"58\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=10612\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_10612\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"10612\" data-product_sku=\"Box_Evidence\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Box L&#039;Evidence&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Box L&#039;Evidence\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_10612\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-10596 post-10596 product type-product status-publish has-post-thumbnail product_cat-ape product_cat-coffrets first instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"1331\" height=\"1186\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1929.png\" class=\"attachment-full size-full wp-image-10597 lazyload\" alt=\"Coffret L&#039;Incontournable - Composition sans fond\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1929.png 1331w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1929-300x267.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1929-1024x912.png 1024w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1929-768x684.png 768w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1929-600x535.png 600w\" data-sizes=\"(max-width: 1331px) 100vw, 1331px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1331px; --smush-placeholder-aspect-ratio: 1331\/1186;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Box L&#8217;Incontournable<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">24,20&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9d4ce43\">\n            quantit\u00e9 de Box L&#039;Incontournable        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9d4ce43\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"117\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=10596\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_10596\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"10596\" data-product_sku=\"Box_Incontournable\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Box L&#039;Incontournable&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Box L&#039;Incontournable\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_10596\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-10576 post-10576 product type-product status-publish has-post-thumbnail product_cat-ape product_cat-coffrets  instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"1331\" height=\"1186\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1928.png\" class=\"attachment-full size-full wp-image-10585 lazyload\" alt=\"Coffret La Gourmande - Composition sans fond\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1928.png 1331w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1928-300x267.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1928-1024x912.png 1024w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1928-768x684.png 768w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/05\/1928-600x535.png 600w\" data-sizes=\"(max-width: 1331px) 100vw, 1331px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1331px; --smush-placeholder-aspect-ratio: 1331\/1186;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Box La Gourmande<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">20,80&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9d52049\">\n            quantit\u00e9 de Box La Gourmande        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9d52049\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"443\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=10576\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_10576\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"10576\" data-product_sku=\"Box_Gourmande_\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Box La Gourmande&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Box La Gourmande\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_10576\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-6400 post-6400 product type-product status-publish has-post-thumbnail product_cat-coffrets product_cat-nos-produits-festifs product_cat-offres-du-moment  instock sale taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"600\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/boite-cabosse-noel-detoure.png\" class=\"attachment-full size-full wp-image-16915 lazyload\" alt=\"Boite Cabosse Noel Grain de Sail - Sans fond\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/boite-cabosse-noel-detoure.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/boite-cabosse-noel-detoure-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/boite-cabosse-noel-detoure-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/boite-cabosse-noel-detoure-100x100.png 100w\" data-sizes=\"(max-width: 600px) 100vw, 600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 600px; --smush-placeholder-aspect-ratio: 600\/600;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Boite Cabosse No\u00ebl<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><del aria-hidden=\"true\"><span class=\"woocommerce-Price-amount amount\">18,90&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/del> <span class=\"screen-reader-text\">Le prix initial \u00e9tait\u00a0: 18,90&nbsp;&euro;.<\/span><ins aria-hidden=\"true\"><span class=\"woocommerce-Price-amount amount\">15,90&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/ins><span class=\"screen-reader-text\">Le prix actuel est\u00a0: 15,90&nbsp;&euro;.<\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9d574bf\">\n            quantit\u00e9 de Boite Cabosse No\u00ebl        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9d574bf\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"45\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=6400\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_6400\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"6400\" data-product_sku=\"Compo_Bte_Cabosse_Noel\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Boite Cabosse No\u00ebl&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Boite Cabosse No\u00ebl\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_6400\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-6362 post-6362 product type-product status-publish has-post-thumbnail product_cat-accessoires product_cat-accessoires-textiles last instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"600\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1272.png\" class=\"attachment-full size-full wp-image-6366 lazyload\" alt=\"Pochette tissu - Grain de Sail x A l&#039;aise Breizh - Rouge et beige\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1272.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1272-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1272-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1272-100x100.png 100w\" data-sizes=\"(max-width: 600px) 100vw, 600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 600px; --smush-placeholder-aspect-ratio: 600\/600;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Pochette tissu Avel rouge<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">9,90&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9d5c61b\">\n            quantit\u00e9 de Pochette tissu Avel rouge        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9d5c61b\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"39\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=6362\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_6362\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"6362\" data-product_sku=\"pochette-1tabl-rouge-beige\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Pochette tissu Avel rouge&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Pochette tissu Avel rouge\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_6362\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-6361 post-6361 product type-product status-publish has-post-thumbnail product_cat-accessoires product_cat-accessoires-textiles first outofstock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"600\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1280.png\" class=\"attachment-full size-full wp-image-6360 lazyload\" alt=\"Torchon balade \u00e0 Morlaix - Grain de Sail x A l&#039;aise Breizh\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1280.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1280-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1280-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1280-100x100.png 100w\" data-sizes=\"(max-width: 600px) 100vw, 600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 600px; --smush-placeholder-aspect-ratio: 600\/600;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Torchon Balade \u00e0 Morlaix<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">9,90&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-ban\" viewBox=\"0 0 512 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M256 8C119.034 8 8 119.033 8 256s111.034 248 248 248 248-111.034 248-248S392.967 8 256 8zm130.108 117.892c65.448 65.448 70 165.481 20.677 235.637L150.47 105.216c70.204-49.356 170.226-44.735 235.638 20.676zM125.892 386.108c-65.448-65.448-70-165.481-20.677-235.637L361.53 406.784c-70.203 49.356-170.226 44.736-235.638-20.676z\"><\/path><\/svg><\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9d617e3\">\n            quantit\u00e9 de Torchon Balade \u00e0 Morlaix        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9d617e3\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"https:\/\/graindesail.com\/fr\/produit\/torchon-balade-a-morlaix\/\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_6361\" data-quantity=\"1\" class=\"button product_type_simple\" data-product_id=\"6361\" data-product_sku=\"torchon-balade-a-morlaix\" aria-label=\"En savoir plus sur &ldquo;Torchon Balade \u00e0 Morlaix&rdquo;\" rel=\"nofollow\" data-success_message=\"\">Lire la suite<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_6361\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-6347 post-6347 product type-product status-publish has-post-thumbnail product_cat-accessoires product_cat-accessoires-textiles  outofstock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"600\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1288.png\" class=\"attachment-full size-full wp-image-6355 lazyload\" alt=\"Torchon Travers\u00e9e Transatlantique - Grain de Sail x A l&#039;Aise Breizh\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1288.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1288-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1288-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1288-100x100.png 100w\" data-sizes=\"(max-width: 600px) 100vw, 600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 600px; --smush-placeholder-aspect-ratio: 600\/600;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Torchon Travers\u00e9e Transatlantique<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">9,90&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-ban\" viewBox=\"0 0 512 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M256 8C119.034 8 8 119.033 8 256s111.034 248 248 248 248-111.034 248-248S392.967 8 256 8zm130.108 117.892c65.448 65.448 70 165.481 20.677 235.637L150.47 105.216c70.204-49.356 170.226-44.735 235.638 20.676zM125.892 386.108c-65.448-65.448-70-165.481-20.677-235.637L361.53 406.784c-70.203 49.356-170.226 44.736-235.638-20.676z\"><\/path><\/svg><\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9d668ed\">\n            quantit\u00e9 de Torchon Travers\u00e9e Transatlantique        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9d668ed\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"https:\/\/graindesail.com\/fr\/produit\/torchon-traversee-transatlantique\/\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_6347\" data-quantity=\"1\" class=\"button product_type_simple\" data-product_id=\"6347\" data-product_sku=\"torchon-traversee-transat\" aria-label=\"En savoir plus sur &ldquo;Torchon Travers\u00e9e Transatlantique&rdquo;\" rel=\"nofollow\" data-success_message=\"\">Lire la suite<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_6347\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-6331 post-6331 product type-product status-publish has-post-thumbnail product_cat-accessoires product_cat-accessoires-textiles  instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"600\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1298.png\" class=\"attachment-full size-full wp-image-6335 lazyload\" alt=\"Tote-bag \u00e9cru Balade \u00e0 Morlaix - Grain de Sail x A l&#039;Aise Breizh\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1298.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1298-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1298-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1298-100x100.png 100w\" data-sizes=\"(max-width: 600px) 100vw, 600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 600px; --smush-placeholder-aspect-ratio: 600\/600;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Tote-bag \u00e9cru Balade \u00e0 Morlaix<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">12,00&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9d6ba13\">\n            quantit\u00e9 de Tote-bag \u00e9cru Balade \u00e0 Morlaix        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9d6ba13\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"76\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=6331\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_6331\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"6331\" data-product_sku=\"tote-bag-\u00e9cru-balade-Mx\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Tote-bag \u00e9cru Balade \u00e0 Morlaix&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Tote-bag \u00e9cru Balade \u00e0 Morlaix\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_6331\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-6316 post-6316 product type-product status-publish has-post-thumbnail product_cat-accessoires product_cat-accessoires-textiles last instock taxable shipping-taxable purchasable product-type-variable\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"600\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/935.png\" class=\"attachment-full size-full wp-image-6322 lazyload\" alt=\"Chaussettes gris et bleu marine - Grain de Sail x A l&#039;Aise Breizh\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/935.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/935-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/935-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/935-100x100.png 100w\" data-sizes=\"(max-width: 600px) 100vw, 600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 600px; --smush-placeholder-aspect-ratio: 600\/600;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Chaussettes Avel &#8211; Bleues<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">12,90&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-variable\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t<a href=\"https:\/\/graindesail.com\/fr\/produit\/chaussettes-avel-bleues\/\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_6316\" data-quantity=\"1\" class=\"button product_type_variable add_to_cart_button cfvsw_ajax_add_to_cart\" data-product_id=\"6316\" data-product_sku=\"\" aria-label=\"S\u00e9lectionner les options pour &ldquo;Chaussettes Avel - Bleues&rdquo;\" rel=\"nofollow\" data-add_to_cart_text=\"Ajouter au panier\" data-select_options_text=\"Choix des options\">Choix des options<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_6316\" class=\"screen-reader-text\">\n\t\tCe produit a plusieurs variations. Les options peuvent \u00eatre choisies sur la page du produit\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-6309 post-6309 product type-product status-publish has-post-thumbnail product_cat-accessoires product_cat-coffrets product_cat-accessoires-textiles first instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"600\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1860.png\" class=\"attachment-full size-full wp-image-6314 lazyload\" alt=\"Pochon Rouge ferm\u00e9 debout\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1860.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1860-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1860-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1860-100x100.png 100w\" data-sizes=\"(max-width: 600px) 100vw, 600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 600px; --smush-placeholder-aspect-ratio: 600\/600;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Pochon Rouge GDS<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">1,00&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9d7a6a6\">\n            quantit\u00e9 de Pochon Rouge GDS        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9d7a6a6\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"68\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=6309\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_6309\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"6309\" data-product_sku=\"pochon_rouge_gds\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Pochon Rouge GDS&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Pochon Rouge GDS\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_6309\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-6302 post-6302 product type-product status-publish has-post-thumbnail product_cat-accessoires product_cat-moulin-a-cafe  instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"600\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-hario-coffee-mill-dome.png\" class=\"attachment-full size-full wp-image-20140 lazyload\" alt=\"Moulin \u00e0 caf\u00e9 manuel Hario Dome - Ambiance\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-hario-coffee-mill-dome.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-hario-coffee-mill-dome-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-hario-coffee-mill-dome-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-hario-coffee-mill-dome-100x100.png 100w\" data-sizes=\"(max-width: 600px) 100vw, 600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 600px; --smush-placeholder-aspect-ratio: 600\/600;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">HARIO &#8211; Dome<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">53,90&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9d7f9bb\">\n            quantit\u00e9 de HARIO - Dome        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9d7f9bb\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"9\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=6302\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_6302\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"6302\" data-product_sku=\"Moulin_Hario_Dome_MCD-2\" aria-label=\"Ajouter au panier\u00a0: &ldquo;HARIO - Dome&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0HARIO - Dome\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_6302\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-6299 post-6299 product type-product status-publish has-post-thumbnail product_cat-accessoires product_cat-coffrets product_cat-accessoires-textiles  instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"600\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1429.png\" class=\"attachment-full size-full wp-image-6300 lazyload\" alt=\"Pochon Ecru GDS\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1429.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1429-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1429-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1429-100x100.png 100w\" data-sizes=\"(max-width: 600px) 100vw, 600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 600px; --smush-placeholder-aspect-ratio: 600\/600;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Pochon Ecru GDS<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">2,00&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9d84abc\">\n            quantit\u00e9 de Pochon Ecru GDS        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9d84abc\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"57\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=6299\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_6299\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"6299\" data-product_sku=\"pochon_ecru_gds\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Pochon Ecru GDS&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Pochon Ecru GDS\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_6299\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-6153 post-6153 product type-product status-publish has-post-thumbnail product_cat-accessoires product_cat-accessoires-textiles last instock taxable shipping-taxable purchasable product-type-variable\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"600\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1465.png\" class=\"attachment-full size-full wp-image-6156 lazyload\" alt=\"Chaussettes Multigo - Grain de Sail x A l&#039;Aise Breizh\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1465.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1465-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1465-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1465-100x100.png 100w\" data-sizes=\"(max-width: 600px) 100vw, 600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 600px; --smush-placeholder-aspect-ratio: 600\/600;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Chaussettes Multigo &#8211; Grain de Sail<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">12,90&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-variable\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t<a href=\"https:\/\/graindesail.com\/fr\/produit\/chaussettes-multigo-grain-de-sail\/\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_6153\" data-quantity=\"1\" class=\"button product_type_variable add_to_cart_button cfvsw_ajax_add_to_cart\" data-product_id=\"6153\" data-product_sku=\"chaussettes-multigo\" aria-label=\"S\u00e9lectionner les options pour &ldquo;Chaussettes Multigo - Grain de Sail&rdquo;\" rel=\"nofollow\" data-add_to_cart_text=\"Ajouter au panier\" data-select_options_text=\"Choix des options\">Choix des options<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_6153\" class=\"screen-reader-text\">\n\t\tCe produit a plusieurs variations. Les options peuvent \u00eatre choisies sur la page du produit\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-6146 post-6146 product type-product status-publish has-post-thumbnail product_cat-accessoires product_cat-accessoires-textiles first instock taxable shipping-taxable purchasable product-type-variable\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"600\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1471.png\" class=\"attachment-full size-full wp-image-6149 lazyload\" alt=\"Chaussettes Avel Bordeaux - Grain de Sail x A l&#039;Aise Breizh\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1471.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1471-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1471-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1471-100x100.png 100w\" data-sizes=\"(max-width: 600px) 100vw, 600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 600px; --smush-placeholder-aspect-ratio: 600\/600;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Chaussettes Avel &#8211; Bordeaux<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">12,90&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-variable\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t<a href=\"https:\/\/graindesail.com\/fr\/produit\/chaussettes-avel-bordeaux\/\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_6146\" data-quantity=\"1\" class=\"button product_type_variable add_to_cart_button cfvsw_ajax_add_to_cart\" data-product_id=\"6146\" data-product_sku=\"chaussettes-bordeaux\" aria-label=\"S\u00e9lectionner les options pour &ldquo;Chaussettes Avel - Bordeaux&rdquo;\" rel=\"nofollow\" data-add_to_cart_text=\"Ajouter au panier\" data-select_options_text=\"Choix des options\">Choix des options<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_6146\" class=\"screen-reader-text\">\n\t\tCe produit a plusieurs variations. Les options peuvent \u00eatre choisies sur la page du produit\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-6138 post-6138 product type-product status-publish has-post-thumbnail product_cat-accessoires product_cat-accessoires-mugs  instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"600\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1867.png\" class=\"attachment-full size-full wp-image-6139 lazyload\" alt=\"Mug Cabosses - Grain de Sail x A l&#039;Aise Breizh\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1867.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1867-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1867-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1867-100x100.png 100w\" data-sizes=\"(max-width: 600px) 100vw, 600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 600px; --smush-placeholder-aspect-ratio: 600\/600;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Mug Cabosses &#8211; Grain de sail<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">8,90&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9d9b2bd\">\n            quantit\u00e9 de Mug Cabosses - Grain de sail        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9d9b2bd\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"87\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=6138\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_6138\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"6138\" data-product_sku=\"mug_cabosses\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Mug Cabosses - Grain de sail&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Mug Cabosses - Grain de sail\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_6138\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-6132 post-6132 product type-product status-publish has-post-thumbnail product_cat-accessoires product_cat-accessoires-mugs  instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"600\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1871.png\" class=\"attachment-full size-full wp-image-6133 lazyload\" alt=\"Mug Navire - Grain de Sail x A l&#039;Aise Breizh\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1871.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1871-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1871-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1871-100x100.png 100w\" data-sizes=\"(max-width: 600px) 100vw, 600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 600px; --smush-placeholder-aspect-ratio: 600\/600;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Mug Navire &#8211; Grain de sail<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">8,90&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9da042d\">\n            quantit\u00e9 de Mug Navire - Grain de sail        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9da042d\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"35\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=6132\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_6132\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"6132\" data-product_sku=\"mug_navire\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Mug Navire - Grain de sail&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Mug Navire - Grain de sail\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_6132\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-6119 post-6119 product type-product status-publish has-post-thumbnail product_cat-accessoires product_cat-accessoires-mugs last outofstock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"600\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1870.png\" class=\"attachment-full size-full wp-image-6120 lazyload\" alt=\"Mug Pas de m\u00e2t Pas de Chocolat - Grain de Sail x A l&#039;Aise Breizh\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1870.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1870-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1870-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1870-100x100.png 100w\" data-sizes=\"(max-width: 600px) 100vw, 600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 600px; --smush-placeholder-aspect-ratio: 600\/600;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Mug Pas de m\u00e2t Pas de Chocolat &#8211; Grain de sail<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">8,90&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-ban\" viewBox=\"0 0 512 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M256 8C119.034 8 8 119.033 8 256s111.034 248 248 248 248-111.034 248-248S392.967 8 256 8zm130.108 117.892c65.448 65.448 70 165.481 20.677 235.637L150.47 105.216c70.204-49.356 170.226-44.735 235.638 20.676zM125.892 386.108c-65.448-65.448-70-165.481-20.677-235.637L361.53 406.784c-70.203 49.356-170.226 44.736-235.638-20.676z\"><\/path><\/svg><\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9da560c\">\n            quantit\u00e9 de Mug Pas de m\u00e2t Pas de Chocolat - Grain de sail        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9da560c\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"https:\/\/graindesail.com\/fr\/produit\/mug-pas-de-mat-pas-de-chocolat-grain-de-sail\/\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_6119\" data-quantity=\"1\" class=\"button product_type_simple\" data-product_id=\"6119\" data-product_sku=\"mug_mat\" aria-label=\"En savoir plus sur &ldquo;Mug Pas de m\u00e2t Pas de Chocolat - Grain de sail&rdquo;\" rel=\"nofollow\" data-success_message=\"\">Lire la suite<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_6119\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-6081 post-6081 product type-product status-publish has-post-thumbnail product_cat-accessoires product_cat-moulin-a-cafe first instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"600\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-manuel-hario-mss1.png\" class=\"attachment-full size-full wp-image-20166 lazyload\" alt=\"Moulin \u00e0 caf\u00e9 manuel Hario Mini Slim + - Ambiance\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-manuel-hario-mss1.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-manuel-hario-mss1-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-manuel-hario-mss1-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-manuel-hario-mss1-100x100.png 100w\" data-sizes=\"(max-width: 600px) 100vw, 600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 600px; --smush-placeholder-aspect-ratio: 600\/600;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">HARIO &#8211; Mini Slim +<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">35,50&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9daaa11\">\n            quantit\u00e9 de HARIO - Mini Slim +        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9daaa11\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"10\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=6081\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_6081\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"6081\" data-product_sku=\"Moulin_Hario_MiniSlim+\" aria-label=\"Ajouter au panier\u00a0: &ldquo;HARIO - Mini Slim +&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0HARIO - Mini Slim +\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_6081\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-6069 post-6069 product type-product status-publish has-post-thumbnail product_cat-accessoires product_cat-moulin-a-cafe  instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"600\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1861.png\" class=\"attachment-full size-full wp-image-6070 lazyload\" alt=\"HARIO - Zebrang Noir\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1861.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1861-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1861-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1861-100x100.png 100w\" data-sizes=\"(max-width: 600px) 100vw, 600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 600px; --smush-placeholder-aspect-ratio: 600\/600;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">HARIO &#8211; Zebrang Noir<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">49,90&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"m40-120 440-760 440 760H40Zm138-80h604L480-720 178-200Zm302-40q17 0 28.5-11.5T520-280q0-17-11.5-28.5T480-320q-17 0-28.5 11.5T440-280q0 17 11.5 28.5T480-240Zm-40-120h80v-200h-80v200Zm40-100Z\"\/><\/svg> Derniers articles en stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9dafdb8\">\n            quantit\u00e9 de HARIO - Zebrang Noir        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"hidden\"\n                                                id=\"quantity_69edeb9dafdb8\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"1\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=6069\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_6069\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"6069\" data-product_sku=\"Moulin_Hario_Zebrang\" aria-label=\"Ajouter au panier\u00a0: &ldquo;HARIO - Zebrang Noir&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0HARIO - Zebrang Noir\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_6069\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-6063 post-6063 product type-product status-publish has-post-thumbnail product_cat-accessoires product_cat-accessoires-textiles  instock taxable shipping-taxable purchasable product-type-variable\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"1221\" height=\"1470\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2014.png\" class=\"attachment-full size-full wp-image-6064 lazyload\" alt=\"Casquette blanche - Grain de Sail x A l&#039;Aise Breizh\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2014.png 1221w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2014-249x300.png 249w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2014-851x1024.png 851w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2014-768x925.png 768w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2014-600x722.png 600w\" data-sizes=\"(max-width: 1221px) 100vw, 1221px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1221px; --smush-placeholder-aspect-ratio: 1221\/1470;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Casquette blanche<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">29,00&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-variable\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t<a href=\"https:\/\/graindesail.com\/fr\/produit\/casquette-blanche\/\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_6063\" data-quantity=\"1\" class=\"button product_type_variable add_to_cart_button cfvsw_ajax_add_to_cart\" data-product_id=\"6063\" data-product_sku=\"casquette-blanche-S-M\" aria-label=\"S\u00e9lectionner les options pour &ldquo;Casquette blanche&rdquo;\" rel=\"nofollow\" data-add_to_cart_text=\"Ajouter au panier\" data-select_options_text=\"Choix des options\">Choix des options<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_6063\" class=\"screen-reader-text\">\n\t\tCe produit a plusieurs variations. Les options peuvent \u00eatre choisies sur la page du produit\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-6060 post-6060 product type-product status-publish has-post-thumbnail product_cat-accessoires product_cat-accessoires-textiles last instock taxable shipping-taxable purchasable product-type-variable\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"1221\" height=\"1470\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2017.png\" class=\"attachment-full size-full wp-image-6061 lazyload\" alt=\"Casquette Bleu Navy - Grain de Sail x A l&#039;Aise Breizh\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2017.png 1221w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2017-249x300.png 249w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2017-851x1024.png 851w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2017-768x925.png 768w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2017-600x722.png 600w\" data-sizes=\"(max-width: 1221px) 100vw, 1221px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1221px; --smush-placeholder-aspect-ratio: 1221\/1470;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Casquette bleu navy<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">29,00&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-variable\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t<a href=\"https:\/\/graindesail.com\/fr\/produit\/casquette-bleu-navy\/\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_6060\" data-quantity=\"1\" class=\"button product_type_variable add_to_cart_button cfvsw_ajax_add_to_cart\" data-product_id=\"6060\" data-product_sku=\"casquette-bleue-S-M\" aria-label=\"S\u00e9lectionner les options pour &ldquo;Casquette bleu navy&rdquo;\" rel=\"nofollow\" data-add_to_cart_text=\"Ajouter au panier\" data-select_options_text=\"Choix des options\">Choix des options<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_6060\" class=\"screen-reader-text\">\n\t\tCe produit a plusieurs variations. Les options peuvent \u00eatre choisies sur la page du produit\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-6051 post-6051 product type-product status-publish has-post-thumbnail product_cat-accessoires product_cat-accessoires-textiles first outofstock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"600\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2079.png\" class=\"attachment-full size-full wp-image-6052 lazyload\" alt=\"Torchon Cacao Trio - Grain de Sail x A l&#039;Aise Breizh\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2079.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2079-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2079-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2079-100x100.png 100w\" data-sizes=\"(max-width: 600px) 100vw, 600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 600px; --smush-placeholder-aspect-ratio: 600\/600;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Torchon Cacao Trio<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">9,90&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-ban\" viewBox=\"0 0 512 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M256 8C119.034 8 8 119.033 8 256s111.034 248 248 248 248-111.034 248-248S392.967 8 256 8zm130.108 117.892c65.448 65.448 70 165.481 20.677 235.637L150.47 105.216c70.204-49.356 170.226-44.735 235.638 20.676zM125.892 386.108c-65.448-65.448-70-165.481-20.677-235.637L361.53 406.784c-70.203 49.356-170.226 44.736-235.638-20.676z\"><\/path><\/svg><\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9dc5422\">\n            quantit\u00e9 de Torchon Cacao Trio        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9dc5422\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"https:\/\/graindesail.com\/fr\/produit\/torchon-cacao-trio\/\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_6051\" data-quantity=\"1\" class=\"button product_type_simple\" data-product_id=\"6051\" data-product_sku=\"torchon-cacao-trio\" aria-label=\"En savoir plus sur &ldquo;Torchon Cacao Trio&rdquo;\" rel=\"nofollow\" data-success_message=\"\">Lire la suite<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_6051\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-6049 post-6049 product type-product status-publish has-post-thumbnail product_cat-accessoires product_cat-accessoires-textiles  instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"1221\" height=\"1470\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2045.png\" class=\"attachment-full size-full wp-image-6050 lazyload\" alt=\"Echarpes Marine Rayures - Grain de Sail x A l&#039;Aise Breizh\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2045.png 1221w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2045-249x300.png 249w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2045-851x1024.png 851w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2045-768x925.png 768w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2045-600x722.png 600w\" data-sizes=\"(max-width: 1221px) 100vw, 1221px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1221px; --smush-placeholder-aspect-ratio: 1221\/1470;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">\u00c9charpe marine rayures<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">39,00&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9dca603\">\n            quantit\u00e9 de \u00c9charpe marine rayures        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9dca603\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"22\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=6049\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_6049\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"6049\" data-product_sku=\"\u00e9charpe-marine-rayures\" aria-label=\"Ajouter au panier\u00a0: &ldquo;\u00c9charpe marine rayures&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0\u00c9charpe marine rayures\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_6049\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-6046 post-6046 product type-product status-publish has-post-thumbnail product_cat-accessoires product_cat-moulin-a-cafe  instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"600\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-manuel-hario-mill-skerton-n1.png\" class=\"attachment-full size-full wp-image-20174 lazyload\" alt=\"Moulin \u00e0 caf\u00e9 manuel Hario Skerton + - Ambiance\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-manuel-hario-mill-skerton-n1.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-manuel-hario-mill-skerton-n1-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-manuel-hario-mill-skerton-n1-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-manuel-hario-mill-skerton-n1-100x100.png 100w\" data-sizes=\"(max-width: 600px) 100vw, 600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 600px; --smush-placeholder-aspect-ratio: 600\/600;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">HARIO &#8211; Skerton +<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">46,00&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9dcf9b5\">\n            quantit\u00e9 de HARIO - Skerton +        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9dcf9b5\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"11\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=6046\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_6046\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"6046\" data-product_sku=\"Moulin_Hario_Skerton_+\" aria-label=\"Ajouter au panier\u00a0: &ldquo;HARIO - Skerton +&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0HARIO - Skerton +\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_6046\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-6018 post-6018 product type-product status-publish has-post-thumbnail product_cat-accessoires product_cat-moulin-a-cafe last instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"600\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-hario-mill-column3.png\" class=\"attachment-full size-full wp-image-20152 lazyload\" alt=\"Moulin \u00e0 caf\u00e9 manuel Hario en bois naturel - Ambiance\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-hario-mill-column3.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-hario-mill-column3-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-hario-mill-column3-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/11\/moulin-a-cafe-hario-mill-column3-100x100.png 100w\" data-sizes=\"(max-width: 600px) 100vw, 600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 600px; --smush-placeholder-aspect-ratio: 600\/600;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Moulin \u00e0 Caf\u00e9 en Bois Naturel<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">49,90&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9dd4bc0\">\n            quantit\u00e9 de Moulin \u00e0 Caf\u00e9 en Bois Naturel        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9dd4bc0\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"3\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=6018\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_6018\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"6018\" data-product_sku=\"Moulin_Hario_Bois_Naturel\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Moulin \u00e0 Caf\u00e9 en Bois Naturel&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Moulin \u00e0 Caf\u00e9 en Bois Naturel\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_6018\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-6012 post-6012 product type-product status-publish has-post-thumbnail product_cat-cafes product_cat-cafe-moulu first instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"600\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2223.png\" class=\"attachment-full size-full wp-image-10407 lazyload\" alt=\"Pack Honduras Moulu - 250G X 4 - BIO\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2223.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2223-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2223-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2223-100x100.png 100w\" data-sizes=\"(max-width: 600px) 100vw, 600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 600px; --smush-placeholder-aspect-ratio: 600\/600;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Pack Honduras Moulu &#8211; 250G X 4 &#8211; BIO<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">25,00&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9dda052\">\n            quantit\u00e9 de Pack Honduras Moulu - 250G X 4 - BIO        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9dda052\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"11\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=6012\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_6012\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"6012\" data-product_sku=\"Pack_4x250G_Honduras_GP_Moulu\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Pack Honduras Moulu - 250G X 4 - BIO&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Pack Honduras Moulu - 250G X 4 - BIO\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_6012\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-6010 post-6010 product type-product status-publish has-post-thumbnail product_cat-cafes product_cat-cafe-moulu  instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"600\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2222.png\" class=\"attachment-full size-full wp-image-10405 lazyload\" alt=\"Pack Mexique Moulu - 250G X 4 - BIO\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2222.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2222-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2222-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2222-100x100.png 100w\" data-sizes=\"(max-width: 600px) 100vw, 600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 600px; --smush-placeholder-aspect-ratio: 600\/600;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Pack Mexique Moulu &#8211; 250G X 4 &#8211; BIO<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">27,50&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9ddf397\">\n            quantit\u00e9 de Pack Mexique Moulu - 250G X 4 - BIO        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9ddf397\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"48\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=6010\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_6010\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"6010\" data-product_sku=\"Pack_4x250G_Mexique_GP_Moulu\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Pack Mexique Moulu - 250G X 4 - BIO&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Pack Mexique Moulu - 250G X 4 - BIO\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_6010\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-6008 post-6008 product type-product status-publish has-post-thumbnail product_cat-cafes product_cat-cafe-moulu  instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"600\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2221.png\" class=\"attachment-full size-full wp-image-10402 lazyload\" alt=\"Pack Colombie Moulu - 250G X 4 - BIO\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2221.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2221-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2221-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2221-100x100.png 100w\" data-sizes=\"(max-width: 600px) 100vw, 600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 600px; --smush-placeholder-aspect-ratio: 600\/600;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Pack Colombie Moulu &#8211; 250G X 4 &#8211; BIO<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">26,50&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9de4744\">\n            quantit\u00e9 de Pack Colombie Moulu - 250G X 4 - BIO        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9de4744\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"49\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=6008\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_6008\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"6008\" data-product_sku=\"Pack_4x250G_Colombie_GP_Moulu\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Pack Colombie Moulu - 250G X 4 - BIO&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Pack Colombie Moulu - 250G X 4 - BIO\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_6008\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-6003 post-6003 product type-product status-publish has-post-thumbnail product_cat-cafes product_cat-cafe-moulu last instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"600\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/pack-perou-moulu-250g-x-4-bio.png\" class=\"attachment-full size-full wp-image-10396 lazyload\" alt=\"Pack P\u00e9rou Moulu - 250G X 4 - BIO\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/pack-perou-moulu-250g-x-4-bio.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/pack-perou-moulu-250g-x-4-bio-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/pack-perou-moulu-250g-x-4-bio-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/pack-perou-moulu-250g-x-4-bio-100x100.png 100w\" data-sizes=\"(max-width: 600px) 100vw, 600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 600px; --smush-placeholder-aspect-ratio: 600\/600;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Pack P\u00e9rou Moulu &#8211; 250G X 4 &#8211; BIO<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">24,00&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9de9afc\">\n            quantit\u00e9 de Pack P\u00e9rou Moulu - 250G X 4 - BIO        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9de9afc\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"26\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=6003\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_6003\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"6003\" data-product_sku=\"Pack_4x250G_Perou_GP_Moulu\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Pack P\u00e9rou Moulu - 250G X 4 - BIO&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Pack P\u00e9rou Moulu - 250G X 4 - BIO\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_6003\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-5998 post-5998 product type-product status-publish has-post-thumbnail product_cat-cafes product_cat-cafes-en-grains first instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"600\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/pack-mexique-grains-500g-x-4-bio.png\" class=\"attachment-full size-full wp-image-10392 lazyload\" alt=\"Pack Mexique Grains - 500G X 4 - BIO\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/pack-mexique-grains-500g-x-4-bio.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/pack-mexique-grains-500g-x-4-bio-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/pack-mexique-grains-500g-x-4-bio-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/pack-mexique-grains-500g-x-4-bio-100x100.png 100w\" data-sizes=\"(max-width: 600px) 100vw, 600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 600px; --smush-placeholder-aspect-ratio: 600\/600;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Pack Mexique Grains &#8211; 500G X 4 &#8211; BIO<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">52,00&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9deeeb2\">\n            quantit\u00e9 de Pack Mexique Grains - 500G X 4 - BIO        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9deeeb2\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"8\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=5998\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_5998\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"5998\" data-product_sku=\"Pack_4x500G_Mexique_GP_Grains\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Pack Mexique Grains - 500G X 4 - BIO&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Pack Mexique Grains - 500G X 4 - BIO\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_5998\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-5996 post-5996 product type-product status-publish has-post-thumbnail product_cat-cafes product_cat-cafes-en-grains  instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"600\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/cafe-colombie-excelso-grains-500g-x-4-bio-1.png\" class=\"attachment-full size-full wp-image-10390 lazyload\" alt=\"Pack Honduras Grains - 500G X 4 - BIO\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/cafe-colombie-excelso-grains-500g-x-4-bio-1.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/cafe-colombie-excelso-grains-500g-x-4-bio-1-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/cafe-colombie-excelso-grains-500g-x-4-bio-1-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/cafe-colombie-excelso-grains-500g-x-4-bio-1-100x100.png 100w\" data-sizes=\"(max-width: 600px) 100vw, 600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 600px; --smush-placeholder-aspect-ratio: 600\/600;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Pack Honduras Grains &#8211; 500G X 4 &#8211; BIO<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">47,00&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9e000e4\">\n            quantit\u00e9 de Pack Honduras Grains - 500G X 4 - BIO        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9e000e4\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"39\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=5996\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_5996\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"5996\" data-product_sku=\"Pack_4x500G_Honduras_GP_Grains\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Pack Honduras Grains - 500G X 4 - BIO&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Pack Honduras Grains - 500G X 4 - BIO\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_5996\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-5994 post-5994 product type-product status-publish has-post-thumbnail product_cat-cafes product_cat-cafes-en-grains  instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"600\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/pack-perou-grains-500g-x-4-bio.png\" class=\"attachment-full size-full wp-image-10385 lazyload\" alt=\"Pack P\u00e9rou Grains - 500G X 4 - BIO\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/pack-perou-grains-500g-x-4-bio.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/pack-perou-grains-500g-x-4-bio-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/pack-perou-grains-500g-x-4-bio-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/pack-perou-grains-500g-x-4-bio-100x100.png 100w\" data-sizes=\"(max-width: 600px) 100vw, 600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 600px; --smush-placeholder-aspect-ratio: 600\/600;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Pack P\u00e9rou Grains &#8211; 500G X 4 &#8211; BIO<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">45,00&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9e05571\">\n            quantit\u00e9 de Pack P\u00e9rou Grains - 500G X 4 - BIO        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9e05571\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"64\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=5994\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_5994\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"5994\" data-product_sku=\"Pack_4x500G_Perou_GP_Grains\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Pack P\u00e9rou Grains - 500G X 4 - BIO&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Pack P\u00e9rou Grains - 500G X 4 - BIO\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_5994\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-5991 post-5991 product type-product status-publish has-post-thumbnail product_cat-cafes product_cat-cafes-en-grains last instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"600\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/cafe-colombie-excelso-grains-500g-x-4-bio.png\" class=\"attachment-full size-full wp-image-10388 lazyload\" alt=\"Pack Colombie Grains - 500G X 4 - BIO\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/cafe-colombie-excelso-grains-500g-x-4-bio.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/cafe-colombie-excelso-grains-500g-x-4-bio-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/cafe-colombie-excelso-grains-500g-x-4-bio-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/cafe-colombie-excelso-grains-500g-x-4-bio-100x100.png 100w\" data-sizes=\"(max-width: 600px) 100vw, 600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 600px; --smush-placeholder-aspect-ratio: 600\/600;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Pack Colombie Grains &#8211; 500G X 4 &#8211; BIO<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">50,00&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9e0a9af\">\n            quantit\u00e9 de Pack Colombie Grains - 500G X 4 - BIO        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9e0a9af\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"48\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=5991\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_5991\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"5991\" data-product_sku=\"Pack_4x500G_Colombie_GP_Grains\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Pack Colombie Grains - 500G X 4 - BIO&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Pack Colombie Grains - 500G X 4 - BIO\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_5991\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-5975 post-5975 product type-product status-publish has-post-thumbnail product_cat-ape product_cat-cafes product_cat-cafes-en-grains first instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"600\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2209.png\" class=\"attachment-full size-full wp-image-10442 lazyload\" alt=\"Caf\u00e9 Honduras Grains - 500G - BIO\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2209.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2209-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2209-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2209-100x100.png 100w\" data-sizes=\"(max-width: 600px) 100vw, 600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 600px; --smush-placeholder-aspect-ratio: 600\/600;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Caf\u00e9 Honduras Grains &#8211; 500G &#8211; BIO<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">12,25&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9e1007a\">\n            quantit\u00e9 de Caf\u00e9 Honduras Grains - 500G - BIO        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9e1007a\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"159\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=5975\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_5975\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"5975\" data-product_sku=\"Caf\u00e9_GP_Honduras_BIO_500G_Grains\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Caf\u00e9 Honduras Grains - 500G - BIO&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Caf\u00e9 Honduras Grains - 500G - BIO\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_5975\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-5971 post-5971 product type-product status-publish has-post-thumbnail product_cat-ape product_cat-cafes product_cat-cafe-moulu  instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"600\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2210.png\" class=\"attachment-full size-full wp-image-10440 lazyload\" alt=\"Caf\u00e9 Honduras Moulu - 250G - BIO\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2210.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2210-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2210-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2210-100x100.png 100w\" data-sizes=\"(max-width: 600px) 100vw, 600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 600px; --smush-placeholder-aspect-ratio: 600\/600;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Caf\u00e9 Honduras Moulu- 250G &#8211; BIO<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">6,50&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9e154c4\">\n            quantit\u00e9 de Caf\u00e9 Honduras Moulu- 250G - BIO        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9e154c4\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"46\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=5971\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_5971\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"5971\" data-product_sku=\"Caf\u00e9_GP_Honduras_250G_Moulu\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Caf\u00e9 Honduras Moulu- 250G - BIO&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Caf\u00e9 Honduras Moulu- 250G - BIO\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_5971\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-5955 post-5955 product type-product status-publish has-post-thumbnail product_cat-cafes product_cat-cafes-en-grains  instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"600\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2204.png\" class=\"attachment-full size-full wp-image-10433 lazyload\" alt=\"Caf\u00e9 P\u00e9rou Grains - 500G - BIO\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2204.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2204-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2204-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2204-100x100.png 100w\" data-sizes=\"(max-width: 600px) 100vw, 600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 600px; --smush-placeholder-aspect-ratio: 600\/600;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Caf\u00e9 P\u00e9rou Grains &#8211; 500G &#8211; BIO<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">11,70&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9e1a8b5\">\n            quantit\u00e9 de Caf\u00e9 P\u00e9rou Grains - 500G - BIO        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9e1a8b5\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"258\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=5955\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_5955\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"5955\" data-product_sku=\"Caf\u00e9_GP_Perou_BIO_500G_Grains\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Caf\u00e9 P\u00e9rou Grains - 500G - BIO&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Caf\u00e9 P\u00e9rou Grains - 500G - BIO\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_5955\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-5951 post-5951 product type-product status-publish has-post-thumbnail product_cat-cafes product_cat-cafe-moulu last instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"600\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2203.png\" class=\"attachment-full size-full wp-image-10431 lazyload\" alt=\"Caf\u00e9 P\u00e9rou Moulu - 250G - BIO\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2203.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2203-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2203-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2203-100x100.png 100w\" data-sizes=\"(max-width: 600px) 100vw, 600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 600px; --smush-placeholder-aspect-ratio: 600\/600;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Caf\u00e9 P\u00e9rou Moulu &#8211; 250G &#8211; BIO<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">6,20&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9e1fe0f\">\n            quantit\u00e9 de Caf\u00e9 P\u00e9rou Moulu - 250G - BIO        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9e1fe0f\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"208\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=5951\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_5951\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"5951\" data-product_sku=\"Caf\u00e9_GP_Perou_BIO_250G_Moulu\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Caf\u00e9 P\u00e9rou Moulu - 250G - BIO&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Caf\u00e9 P\u00e9rou Moulu - 250G - BIO\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_5951\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-5947 post-5947 product type-product status-publish has-post-thumbnail product_cat-cafes product_cat-cafes-en-grains first instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"600\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2202.png\" class=\"attachment-full size-full wp-image-10429 lazyload\" alt=\"Caf\u00e9 Mexique Grains- 500G - BIO\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2202.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2202-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2202-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2202-100x100.png 100w\" data-sizes=\"(max-width: 600px) 100vw, 600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 600px; --smush-placeholder-aspect-ratio: 600\/600;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Caf\u00e9 Mexique Grains- 500G &#8211; BIO<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">13,55&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9e25abf\">\n            quantit\u00e9 de Caf\u00e9 Mexique Grains- 500G - BIO        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9e25abf\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"32\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=5947\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_5947\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"5947\" data-product_sku=\"Caf\u00e9_GP_Mexique_BIO_500G_Grains\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Caf\u00e9 Mexique Grains- 500G - BIO&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Caf\u00e9 Mexique Grains- 500G - BIO\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_5947\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-5945 post-5945 product type-product status-publish has-post-thumbnail product_cat-cafes product_cat-cafe-moulu  instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"600\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2200.png\" class=\"attachment-full size-full wp-image-10427 lazyload\" alt=\"Caf\u00e9 Mexique Moulu - 250G - BIO\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2200.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2200-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2200-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2200-100x100.png 100w\" data-sizes=\"(max-width: 600px) 100vw, 600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 600px; --smush-placeholder-aspect-ratio: 600\/600;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Caf\u00e9 Mexique Moulu &#8211; 250G &#8211; BIO<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">7,20&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9e2b007\">\n            quantit\u00e9 de Caf\u00e9 Mexique Moulu - 250G - BIO        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9e2b007\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"193\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=5945\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_5945\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"5945\" data-product_sku=\"Caf\u00e9_GP_Mexique_BIO_250G_Moulu\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Caf\u00e9 Mexique Moulu - 250G - BIO&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Caf\u00e9 Mexique Moulu - 250G - BIO\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_5945\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-5940 post-5940 product type-product status-publish has-post-thumbnail product_cat-cafes product_cat-cafes-en-grains  instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"600\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2199.png\" class=\"attachment-full size-full wp-image-10425 lazyload\" alt=\"Caf\u00e9 Colombie Excelso Grains - 500G - BIO\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2199.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2199-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2199-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2199-100x100.png 100w\" data-sizes=\"(max-width: 600px) 100vw, 600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 600px; --smush-placeholder-aspect-ratio: 600\/600;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Caf\u00e9 Colombie Excelso Grains &#8211; 500G &#8211; BIO<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">13,00&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9e30546\">\n            quantit\u00e9 de Caf\u00e9 Colombie Excelso Grains - 500G - BIO        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9e30546\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"195\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=5940\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_5940\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"5940\" data-product_sku=\"Caf\u00e9_GP_Colombie_BIO_500G_Grains\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Caf\u00e9 Colombie Excelso Grains - 500G - BIO&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Caf\u00e9 Colombie Excelso Grains - 500G - BIO\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_5940\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-5932 post-5932 product type-product status-publish has-post-thumbnail product_cat-cafes product_cat-cafe-moulu last instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"600\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2198.png\" class=\"attachment-full size-full wp-image-10423 lazyload\" alt=\"Caf\u00e9 Colombie Excelso Moulu - 250G - BIO\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2198.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2198-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2198-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/2198-100x100.png 100w\" data-sizes=\"(max-width: 600px) 100vw, 600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 600px; --smush-placeholder-aspect-ratio: 600\/600;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Caf\u00e9 Colombie Excelso Moulu &#8211; 250G &#8211; BIO<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">6,90&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9e366e8\">\n            quantit\u00e9 de Caf\u00e9 Colombie Excelso Moulu - 250G - BIO        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9e366e8\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"199\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=5932\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_5932\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"5932\" data-product_sku=\"Caf\u00e9_GP_Colombie_BIO_250G_Moulu\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Caf\u00e9 Colombie Excelso Moulu - 250G - BIO&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Caf\u00e9 Colombie Excelso Moulu - 250G - BIO\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_5932\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-5895 post-5895 product type-product status-publish has-post-thumbnail product_cat-offres-du-moment product_cat-paques product_cat-gourmandises-sachets first instock sale taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"600\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1727.png\" class=\"attachment-full size-full wp-image-5904 lazyload\" alt=\"paques\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1727.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1727-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1727-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/1727-100x100.png 100w\" data-sizes=\"(max-width: 600px) 100vw, 600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 600px; --smush-placeholder-aspect-ratio: 600\/600;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Sachet Assortiment de chocolat au Lait \u2013 150G \u2013 BIO<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><del aria-hidden=\"true\"><span class=\"woocommerce-Price-amount amount\">5,40&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/del> <span class=\"screen-reader-text\">Le prix initial \u00e9tait\u00a0: 5,40&nbsp;&euro;.<\/span><ins aria-hidden=\"true\"><span class=\"woocommerce-Price-amount amount\">3,56&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/ins><span class=\"screen-reader-text\">Le prix actuel est\u00a0: 3,56&nbsp;&euro;.<\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9e3c965\">\n            quantit\u00e9 de Sachet Assortiment de chocolat au Lait \u2013 150G \u2013 BIO        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9e3c965\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"299\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=5895\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_5895\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"5895\" data-product_sku=\"Sachet-Assortiment-Fritures-150G\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Sachet Assortiment de chocolat au Lait \u2013 150G \u2013 BIO&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Sachet Assortiment de chocolat au Lait \u2013 150G \u2013 BIO\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_5895\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-5674 post-5674 product type-product status-publish has-post-thumbnail product_cat-ape product_cat-chocolat product_cat-chocolat-tablette  instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"420\" height=\"774\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-NOIR-ECLATSDEFEVESCACAO-10ANS-RECTO-BD.png\" class=\"attachment-full size-full wp-image-23903 lazyload\" alt=\"Tablette Noir \u00c9clats de F\u00e8ves - Bandeau 10 ans\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-NOIR-ECLATSDEFEVESCACAO-10ANS-RECTO-BD.png 420w, https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-NOIR-ECLATSDEFEVESCACAO-10ANS-RECTO-BD-163x300.png 163w\" data-sizes=\"(max-width: 420px) 100vw, 420px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 420px; --smush-placeholder-aspect-ratio: 420\/774;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Noir \u00e9clats de f\u00e8ves de cacao<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">3,50&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9e42145\">\n            quantit\u00e9 de Noir \u00e9clats de f\u00e8ves de cacao        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9e42145\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"439\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=5674\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_5674\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"5674\" data-product_sku=\"TAB_NOIR_ECLATS_FEVES_CACAO\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Noir \u00e9clats de f\u00e8ves de cacao&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Noir \u00e9clats de f\u00e8ves de cacao\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_5674\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-5662 post-5662 product type-product status-publish has-post-thumbnail product_cat-chocolat product_cat-gourmandises product_cat-chocolat-pistoles product_cat-gourmandises-sachets  instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"1000\" height=\"1000\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/pistoles-chocolat-noir75-grain-de-sail-sans-fond.png\" class=\"attachment-full size-full wp-image-22046 lazyload\" alt=\"Sachet de Pistoles Noir 75% - 180G - Sans Fond\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/pistoles-chocolat-noir75-grain-de-sail-sans-fond.png 1000w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/pistoles-chocolat-noir75-grain-de-sail-sans-fond-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/pistoles-chocolat-noir75-grain-de-sail-sans-fond-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/pistoles-chocolat-noir75-grain-de-sail-sans-fond-768x768.png 768w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/pistoles-chocolat-noir75-grain-de-sail-sans-fond-600x600.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/pistoles-chocolat-noir75-grain-de-sail-sans-fond-100x100.png 100w\" data-sizes=\"(max-width: 1000px) 100vw, 1000px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1000px; --smush-placeholder-aspect-ratio: 1000\/1000;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Sachet de 180 g de pistoles de chocolat &#8211; 75% de cacao &#8211; BIO<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">4,90&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9e4762a\">\n            quantit\u00e9 de Sachet de 180 g de pistoles de chocolat - 75% de cacao - BIO        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9e4762a\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"88\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=5662\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_5662\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"5662\" data-product_sku=\"PISTOLES_75%_180G\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Sachet de 180 g de pistoles de chocolat - 75% de cacao - BIO&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Sachet de 180 g de pistoles de chocolat - 75% de cacao - BIO\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_5662\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-5651 post-5651 product type-product status-publish has-post-thumbnail product_cat-chocolat product_cat-gourmandises product_cat-chocolat-pistoles product_cat-gourmandises-sachets last instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"1000\" height=\"1000\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/pistoles-chocolat-noir-62-grain-de-sail-sans-fond.png\" class=\"attachment-full size-full wp-image-22048 lazyload\" alt=\"Sachet de Pistoles Noir 62% - 180G - Sans Fond\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/pistoles-chocolat-noir-62-grain-de-sail-sans-fond.png 1000w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/pistoles-chocolat-noir-62-grain-de-sail-sans-fond-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/pistoles-chocolat-noir-62-grain-de-sail-sans-fond-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/pistoles-chocolat-noir-62-grain-de-sail-sans-fond-768x768.png 768w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/pistoles-chocolat-noir-62-grain-de-sail-sans-fond-600x600.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/pistoles-chocolat-noir-62-grain-de-sail-sans-fond-100x100.png 100w\" data-sizes=\"(max-width: 1000px) 100vw, 1000px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1000px; --smush-placeholder-aspect-ratio: 1000\/1000;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Sachet de 180 g de pistoles de chocolat &#8211; 62% de cacao &#8211; BIO<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">4,50&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9e4c82d\">\n            quantit\u00e9 de Sachet de 180 g de pistoles de chocolat - 62% de cacao - BIO        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9e4c82d\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"432\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=5651\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_5651\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"5651\" data-product_sku=\"PISTOLES_62%_180G\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Sachet de 180 g de pistoles de chocolat - 62% de cacao - BIO&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Sachet de 180 g de pistoles de chocolat - 62% de cacao - BIO\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_5651\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-5615 post-5615 product type-product status-publish has-post-thumbnail product_cat-ape product_cat-chocolat product_cat-chocolat-tablette first instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"416\" height=\"774\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-NOIR-CARAMEL-FLEURDESEL-10ANS-RECTO-BD.png\" class=\"attachment-full size-full wp-image-23939 lazyload\" alt=\"Tablette Noir Caramel - Bandeau 10 ans\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-NOIR-CARAMEL-FLEURDESEL-10ANS-RECTO-BD.png 416w, https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-NOIR-CARAMEL-FLEURDESEL-10ANS-RECTO-BD-161x300.png 161w\" data-sizes=\"(max-width: 416px) 100vw, 416px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 416px; --smush-placeholder-aspect-ratio: 416\/774;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Noir, Caramel et Fleur de sel<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">3,55&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9e5181a\">\n            quantit\u00e9 de Noir, Caramel et Fleur de sel        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9e5181a\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"267\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=5615\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_5615\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"5615\" data-product_sku=\"TAB_NOIR_CARAMEL_FDS\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Noir, Caramel et Fleur de sel&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Noir, Caramel et Fleur de sel\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_5615\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-5610 post-5610 product type-product status-publish has-post-thumbnail product_cat-paques product_cat-chocolat-tablette  instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"600\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/tablette-de-chocolat-au-lait-pralin-100g-bio.png\" class=\"attachment-full size-full wp-image-10362 lazyload\" alt=\"Tablette de chocolat au lait Pralin - Paques - Avant de la tablette\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/tablette-de-chocolat-au-lait-pralin-100g-bio.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/tablette-de-chocolat-au-lait-pralin-100g-bio-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/tablette-de-chocolat-au-lait-pralin-100g-bio-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/tablette-de-chocolat-au-lait-pralin-100g-bio-100x100.png 100w\" data-sizes=\"(max-width: 600px) 100vw, 600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 600px; --smush-placeholder-aspect-ratio: 600\/600;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Lait au Pralin<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">3,65&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9e565a2\">\n            quantit\u00e9 de Lait au Pralin        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9e565a2\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"125\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=5610\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_5610\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"5610\" data-product_sku=\"tab-choc-lait-pralin\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Lait au Pralin&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Lait au Pralin\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_5610\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-5592 post-5592 product type-product status-publish has-post-thumbnail product_cat-ape product_cat-chocolat product_cat-chocolat-tablette  instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"422\" height=\"774\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-NOIR-FRAMBOISE-PRALIN-10ANS-RECTO-BD.png\" class=\"attachment-full size-full wp-image-23907 lazyload\" alt=\"Tablette Noir Framboise Pralin - Bandeau 10 ans\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-NOIR-FRAMBOISE-PRALIN-10ANS-RECTO-BD.png 422w, https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-NOIR-FRAMBOISE-PRALIN-10ANS-RECTO-BD-164x300.png 164w\" data-sizes=\"(max-width: 422px) 100vw, 422px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 422px; --smush-placeholder-aspect-ratio: 422\/774;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Noir Framboise et Pralin<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">3,65&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9e5b708\">\n            quantit\u00e9 de Noir Framboise et Pralin        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9e5b708\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"442\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=5592\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_5592\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"5592\" data-product_sku=\"TAB_NOIR_FRAMBOISE_PRALIN\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Noir Framboise et Pralin&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Noir Framboise et Pralin\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_5592\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-5579 post-5579 product type-product status-publish has-post-thumbnail product_cat-gourmandises product_cat-offres-du-moment product_cat-gourmandises-sachets last instock sale taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"1000\" height=\"1000\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/sachet-noisettes-caramelisees-sans-fond.png\" class=\"attachment-full size-full wp-image-24491 lazyload\" alt=\"Sachet de Noisettes caram\u00e9lis\u00e9es enrob\u00e9es 180G - Sans fond\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/sachet-noisettes-caramelisees-sans-fond.png 1000w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/sachet-noisettes-caramelisees-sans-fond-300x300.png 300w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/sachet-noisettes-caramelisees-sans-fond-150x150.png 150w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/sachet-noisettes-caramelisees-sans-fond-768x768.png 768w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/sachet-noisettes-caramelisees-sans-fond-600x600.png 600w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/sachet-noisettes-caramelisees-sans-fond-100x100.png 100w\" data-sizes=\"(max-width: 1000px) 100vw, 1000px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1000px; --smush-placeholder-aspect-ratio: 1000\/1000;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Sachet de Noisettes enrob\u00e9es &#8211; Lait 45%<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><del aria-hidden=\"true\"><span class=\"woocommerce-Price-amount amount\">5,00&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/del> <span class=\"screen-reader-text\">Le prix initial \u00e9tait\u00a0: 5,00&nbsp;&euro;.<\/span><ins aria-hidden=\"true\"><span class=\"woocommerce-Price-amount amount\">3,50&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/ins><span class=\"screen-reader-text\">Le prix actuel est\u00a0: 3,50&nbsp;&euro;.<\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9e60e05\">\n            quantit\u00e9 de Sachet de Noisettes enrob\u00e9es - Lait 45%        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9e60e05\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"20\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=5579\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_5579\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"5579\" data-product_sku=\"noisette lait - Bio\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Sachet de Noisettes enrob\u00e9es - Lait 45%&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Sachet de Noisettes enrob\u00e9es - Lait 45%\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_5579\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-5550 post-5550 product type-product status-publish has-post-thumbnail product_cat-ape product_cat-chocolat product_cat-chocolat-tablette first instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"423\" height=\"774\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-NOIR-THE-10ANS-RECTO-BD.png\" class=\"attachment-full size-full wp-image-23911 lazyload\" alt=\"Tablette Noir Th\u00e9 Earl Grey - Bandeau 10 ans\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-NOIR-THE-10ANS-RECTO-BD.png 423w, https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-NOIR-THE-10ANS-RECTO-BD-164x300.png 164w\" data-sizes=\"(max-width: 423px) 100vw, 423px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 423px; --smush-placeholder-aspect-ratio: 423\/774;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Noir au Th\u00e9 Earl Grey<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">3,55&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9e661ec\">\n            quantit\u00e9 de Noir au Th\u00e9 Earl Grey        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9e661ec\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"361\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=5550\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_5550\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"5550\" data-product_sku=\"TAB_NOIR_THE_EARL_GREY\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Noir au Th\u00e9 Earl Grey&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Noir au Th\u00e9 Earl Grey\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_5550\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-5546 post-5546 product type-product status-publish has-post-thumbnail product_cat-ape product_cat-chocolat product_cat-chocolat-tablette  instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"408\" height=\"774\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-LAIT-CACAHUETES-10ANS-RECTO-BD.png\" class=\"attachment-full size-full wp-image-23915 lazyload\" alt=\"Tablette Lait Cacahu\u00e8tes Caramel - Bandeau 10 ans\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-LAIT-CACAHUETES-10ANS-RECTO-BD.png 408w, https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-LAIT-CACAHUETES-10ANS-RECTO-BD-158x300.png 158w\" data-sizes=\"(max-width: 408px) 100vw, 408px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 408px; --smush-placeholder-aspect-ratio: 408\/774;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Lait, cacahu\u00e8tes, caramel et fleur de sel<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">3,60&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9e6b5e4\">\n            quantit\u00e9 de Lait, cacahu\u00e8tes, caramel et fleur de sel        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9e6b5e4\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"405\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=5546\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_5546\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"5546\" data-product_sku=\"TAB_LAIT_CACAHUETES\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Lait, cacahu\u00e8tes, caramel et fleur de sel&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Lait, cacahu\u00e8tes, caramel et fleur de sel\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_5546\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-5542 post-5542 product type-product status-publish has-post-thumbnail product_cat-ape product_cat-chocolat product_cat-chocolat-tablette  instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"415\" height=\"774\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-LAIT-NOISETTES-10ANS-RECTO-BD.png\" class=\"attachment-full size-full wp-image-23925 lazyload\" alt=\"Tablette Lait Noisettes - Bandeau 10 ans\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-LAIT-NOISETTES-10ANS-RECTO-BD.png 415w, https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-LAIT-NOISETTES-10ANS-RECTO-BD-161x300.png 161w\" data-sizes=\"(max-width: 415px) 100vw, 415px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 415px; --smush-placeholder-aspect-ratio: 415\/774;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Lait et noisettes torr\u00e9fi\u00e9es<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">3,65&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9e70969\">\n            quantit\u00e9 de Lait et noisettes torr\u00e9fi\u00e9es        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9e70969\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"371\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=5542\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_5542\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"5542\" data-product_sku=\"TAB_LAIT_NOISETTES\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Lait et noisettes torr\u00e9fi\u00e9es&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Lait et noisettes torr\u00e9fi\u00e9es\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_5542\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-5538 post-5538 product type-product status-publish has-post-thumbnail product_cat-ape product_cat-chocolat product_cat-chocolat-tablette last instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"424\" height=\"774\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-NOIR-RAISIN-10ANS-RECTO-BD.png\" class=\"attachment-full size-full wp-image-23933 lazyload\" alt=\"Tablette Noir Raisins Sarrasin - Bandeau 10 ans\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-NOIR-RAISIN-10ANS-RECTO-BD.png 424w, https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-NOIR-RAISIN-10ANS-RECTO-BD-164x300.png 164w\" data-sizes=\"(max-width: 424px) 100vw, 424px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 424px; --smush-placeholder-aspect-ratio: 424\/774;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Noir, raisins et sarrasin torr\u00e9fi\u00e9<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">3,50&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9e75d95\">\n            quantit\u00e9 de Noir, raisins et sarrasin torr\u00e9fi\u00e9        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9e75d95\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"660\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=5538\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_5538\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"5538\" data-product_sku=\"TAB_NOIR_RAISINS_SARRASIN\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Noir, raisins et sarrasin torr\u00e9fi\u00e9&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Noir, raisins et sarrasin torr\u00e9fi\u00e9\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_5538\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-5534 post-5534 product type-product status-publish has-post-thumbnail product_cat-ape product_cat-chocolat product_cat-chocolat-tablette first instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"416\" height=\"774\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-NOIR-85-10ANS-RECTO-BD.png\" class=\"attachment-full size-full wp-image-23929 lazyload\" alt=\"Tablette Noir 85% - Bandeau 10 ans\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-NOIR-85-10ANS-RECTO-BD.png 416w, https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-NOIR-85-10ANS-RECTO-BD-161x300.png 161w\" data-sizes=\"(max-width: 416px) 100vw, 416px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 416px; --smush-placeholder-aspect-ratio: 416\/774;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Noir 85% de cacao<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">3,60&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9e7b4c1\">\n            quantit\u00e9 de Noir 85% de cacao        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9e7b4c1\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"374\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=5534\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_5534\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"5534\" data-product_sku=\"TAB_NOIR_85\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Noir 85% de cacao&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Noir 85% de cacao\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_5534\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-5530 post-5530 product type-product status-publish has-post-thumbnail product_cat-ape product_cat-chocolat product_cat-chocolat-tablette  instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"416\" height=\"774\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-LAIT-CARAMEL-10ANS-RECTO-BD.png\" class=\"attachment-full size-full wp-image-23919 lazyload\" alt=\"Tablette Lait Caramel - Bandeau 10 ans\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-LAIT-CARAMEL-10ANS-RECTO-BD.png 416w, https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-LAIT-CARAMEL-10ANS-RECTO-BD-161x300.png 161w\" data-sizes=\"(max-width: 416px) 100vw, 416px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 416px; --smush-placeholder-aspect-ratio: 416\/774;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Lait, caramel et fleur de sel<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">3,60&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9e80759\">\n            quantit\u00e9 de Lait, caramel et fleur de sel        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9e80759\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"599\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=5530\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_5530\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"5530\" data-product_sku=\"TAB_LAIT_CARAMEL_FDS\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Lait, caramel et fleur de sel&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Lait, caramel et fleur de sel\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_5530\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-5525 post-5525 product type-product status-publish has-post-thumbnail product_cat-ape product_cat-chocolat product_cat-chocolat-tablette  instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"422\" height=\"774\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-NOIR-NOISETTES-10ANS-RECTO-BD.png\" class=\"attachment-full size-full wp-image-23931 lazyload\" alt=\"Tablette Noir Noisettes - Bandeau 10 ans\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-NOIR-NOISETTES-10ANS-RECTO-BD.png 422w, https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-NOIR-NOISETTES-10ANS-RECTO-BD-164x300.png 164w\" data-sizes=\"(max-width: 422px) 100vw, 422px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 422px; --smush-placeholder-aspect-ratio: 422\/774;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Noir et noisettes torr\u00e9fi\u00e9es<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">3,55&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9e854b5\">\n            quantit\u00e9 de Noir et noisettes torr\u00e9fi\u00e9es        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9e854b5\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"335\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=5525\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_5525\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"5525\" data-product_sku=\"TAB_NOIR_NOISETTES\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Noir et noisettes torr\u00e9fi\u00e9es&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Noir et noisettes torr\u00e9fi\u00e9es\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_5525\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-5521 post-5521 product type-product status-publish has-post-thumbnail product_cat-ape product_cat-chocolat product_cat-chocolat-tablette last instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"429\" height=\"787\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/Capture-decran-2025-12-23-a-16.14.05.png\" class=\"attachment-full size-full wp-image-26737 lazyload\" alt=\"\u00c9dition limit\u00e9e Noir Fleur de Sel 10 ans - Peintre Jonathan Florent\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/Capture-decran-2025-12-23-a-16.14.05.png 429w, https:\/\/graindesail.com\/wp-content\/uploads\/2025\/02\/Capture-decran-2025-12-23-a-16.14.05-164x300.png 164w\" data-sizes=\"(max-width: 429px) 100vw, 429px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 429px; --smush-placeholder-aspect-ratio: 429\/787;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Noir et fleur de sel<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">3,50&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9e8a190\">\n            quantit\u00e9 de Noir et fleur de sel        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9e8a190\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"1162\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=5521\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_5521\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"5521\" data-product_sku=\"TAB_NOIR_FDS\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Noir et fleur de sel&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Noir et fleur de sel\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_5521\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-5515 post-5515 product type-product status-publish has-post-thumbnail product_cat-ape product_cat-chocolat product_cat-chocolat-tablette first instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"415\" height=\"775\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-LAIT-COCO-10ANS-RECTO-BD.png\" class=\"attachment-full size-full wp-image-23921 lazyload\" alt=\"Tablette Lait Coco - Bandeau 10 ans\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-LAIT-COCO-10ANS-RECTO-BD.png 415w, https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-LAIT-COCO-10ANS-RECTO-BD-161x300.png 161w\" data-sizes=\"(max-width: 415px) 100vw, 415px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 415px; --smush-placeholder-aspect-ratio: 415\/775;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Lait et noix de coco toast\u00e9es<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">3,55&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9e8ee0b\">\n            quantit\u00e9 de Lait et noix de coco toast\u00e9es        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9e8ee0b\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"232\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=5515\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_5515\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"5515\" data-product_sku=\"TAB_LAIT_COCO\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Lait et noix de coco toast\u00e9es&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Lait et noix de coco toast\u00e9es\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_5515\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-5511 post-5511 product type-product status-publish has-post-thumbnail product_cat-ape product_cat-chocolat product_cat-chocolat-tablette  instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"408\" height=\"774\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-LAIT55-10ANS-GDS-RECTO-BD.png\" class=\"attachment-full size-full wp-image-23913 lazyload\" alt=\"Tablette Lait 55% - Bandeau 10 ans\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-LAIT55-10ANS-GDS-RECTO-BD.png 408w, https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-LAIT55-10ANS-GDS-RECTO-BD-158x300.png 158w\" data-sizes=\"(max-width: 408px) 100vw, 408px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 408px; --smush-placeholder-aspect-ratio: 408\/774;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Lait intense en cacao 55%<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">3,65&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9e93b0c\">\n            quantit\u00e9 de Lait intense en cacao 55%        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9e93b0c\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"198\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=5511\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_5511\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"5511\" data-product_sku=\"TAB_LAIT_INTENSE\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Lait intense en cacao 55%&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Lait intense en cacao 55%\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_5511\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-5507 post-5507 product type-product status-publish has-post-thumbnail product_cat-ape product_cat-chocolat product_cat-chocolat-tablette  instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"423\" height=\"774\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-NOIR62-10ANS-RECTO-BD.png\" class=\"attachment-full size-full wp-image-23935 lazyload\" alt=\"Tablette Noir 62% - Bandeau 10 ans\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-NOIR62-10ANS-RECTO-BD.png 423w, https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-NOIR62-10ANS-RECTO-BD-164x300.png 164w\" data-sizes=\"(max-width: 423px) 100vw, 423px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 423px; --smush-placeholder-aspect-ratio: 423\/774;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Noir 62% de cacao<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">3,50&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9e98831\">\n            quantit\u00e9 de Noir 62% de cacao        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9e98831\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"409\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=5507\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_5507\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"5507\" data-product_sku=\"TAB_NOIR_62\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Noir 62% de cacao&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Noir 62% de cacao\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_5507\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-5503 post-5503 product type-product status-publish has-post-thumbnail product_cat-ape product_cat-chocolat product_cat-chocolat-tablette last instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"414\" height=\"774\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-LAIT-CAFE-10ANS-RECTO-BD.png\" class=\"attachment-full size-full wp-image-23917 lazyload\" alt=\"Tablette Lait Caf\u00e9 - Bandeau 10 ans\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-LAIT-CAFE-10ANS-RECTO-BD.png 414w, https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-LAIT-CAFE-10ANS-RECTO-BD-160x300.png 160w\" data-sizes=\"(max-width: 414px) 100vw, 414px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 414px; --smush-placeholder-aspect-ratio: 414\/774;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Lait et caf\u00e9<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">3,55&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9e9d4da\">\n            quantit\u00e9 de Lait et caf\u00e9        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9e9d4da\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"425\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=5503\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_5503\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"5503\" data-product_sku=\"TAB_LAIT_CAFE\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Lait et caf\u00e9&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Lait et caf\u00e9\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_5503\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-5496 post-5496 product type-product status-publish has-post-thumbnail product_cat-ape product_cat-chocolat product_cat-chocolat-tablette first instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"421\" height=\"774\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-NOIR-SESAME-10ANS-RECTO-BD.png\" class=\"attachment-full size-full wp-image-23909 lazyload\" alt=\"Tablette Noir S\u00e9same - Bandeau 10 ans\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-NOIR-SESAME-10ANS-RECTO-BD.png 421w, https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-NOIR-SESAME-10ANS-RECTO-BD-163x300.png 163w\" data-sizes=\"(max-width: 421px) 100vw, 421px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 421px; --smush-placeholder-aspect-ratio: 421\/774;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Noir et s\u00e9same torr\u00e9fi\u00e9<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">3,55&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9ea216b\">\n            quantit\u00e9 de Noir et s\u00e9same torr\u00e9fi\u00e9        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9ea216b\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"246\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=5496\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_5496\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"5496\" data-product_sku=\"TAB_NOIR_SESAME\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Noir et s\u00e9same torr\u00e9fi\u00e9&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Noir et s\u00e9same torr\u00e9fi\u00e9\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_5496\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-5490 post-5490 product type-product status-publish has-post-thumbnail product_cat-ape product_cat-chocolat product_cat-chocolat-tablette  instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"416\" height=\"774\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-LAIT-FLEURDESEL-10ANS-RECTO-BD.png\" class=\"attachment-full size-full wp-image-23923 lazyload\" alt=\"Tablette Lait Fleur de Sel - Bandeau 10 ans\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-LAIT-FLEURDESEL-10ANS-RECTO-BD.png 416w, https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-LAIT-FLEURDESEL-10ANS-RECTO-BD-161x300.png 161w\" data-sizes=\"(max-width: 416px) 100vw, 416px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 416px; --smush-placeholder-aspect-ratio: 416\/774;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Lait et fleur de sel<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">3,60&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9ea6ddd\">\n            quantit\u00e9 de Lait et fleur de sel        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9ea6ddd\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"1195\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=5490\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_5490\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"5490\" data-product_sku=\"TAB_LAIT_FDS\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Lait et fleur de sel&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Lait et fleur de sel\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_5490\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"loop-item\" data-elementor-id=\"15038\" class=\"elementor elementor-15038 e-loop-item e-loop-item-5292 post-5292 product type-product status-publish has-post-thumbnail product_cat-ape product_cat-chocolat product_cat-chocolat-tablette  instock taxable shipping-taxable purchasable product-type-simple\" data-elementor-post-type=\"elementor_library\" data-custom-edit-handle=\"1\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e1c566 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e1c566\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07cb087\" data-id=\"07cb087\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d8507a elementor-widget elementor-widget-image\" data-id=\"4d8507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"422\" height=\"774\" data-src=\"https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-NOIR-75-10ANS-RECTO-BD.png\" class=\"attachment-full size-full wp-image-23927 lazyload\" alt=\"Tablette Noir 75% - Bandeau 10 ans\" data-srcset=\"https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-NOIR-75-10ANS-RECTO-BD.png 422w, https:\/\/graindesail.com\/wp-content\/uploads\/2026\/02\/GDS-NOIR-75-10ANS-RECTO-BD-164x300.png 164w\" data-sizes=\"(max-width: 422px) 100vw, 422px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 422px; --smush-placeholder-aspect-ratio: 422\/774;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcf2dd6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"fcf2dd6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-0a08ab7\" data-id=\"0a08ab7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fe45fb elementor-widget elementor-widget-heading\" data-id=\"2fe45fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Noir 75% de cacao<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b84187 elementor-widget elementor-widget-heading\" data-id=\"1b84187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"woocommerce-Price-amount amount\">3,55&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-023b0c6 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"023b0c6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-bcff654\" data-id=\"bcff654\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b50b6c1 elementor-widget__width-auto elementor-widget elementor-widget-shortcode\" data-id=\"b50b6c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span class=\"product-stock \"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"\/><\/svg> En stock<\/span>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5e656 elementor-add-to-cart--align-left elementor-widget__width-auto e-add-to-cart--show-quantity-yes elementor-widget elementor-widget-woocommerce-product-add-to-cart\" data-id=\"ba5e656\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"woocommerce-product-add-to-cart.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-add-to-cart elementor-product-simple\">\n\t\t\t\t\t<div class=\"e-loop-add-to-cart-form-container\">\n\t\t\t<form class=\"cart e-loop-add-to-cart-form\">\n\t\t\t\t\n    <div class=\"quantity\">\n        \n        <label class=\"screen-reader-text\" for=\"quantity_69edeb9eaba55\">\n            quantit\u00e9 de Noir 75% de cacao        <\/label>\n\n        <div class=\"custom-qty-wrapper\">\n            <!-- Input Field in its own div -->\n            <div class=\"qty-input-wrap\">\n                <input\n                        type=\"number\"\n                                                id=\"quantity_69edeb9eaba55\"\n                        class=\"qty input-text qty text\"\n                        name=\"quantity\"\n                        value=\"1\"\n                        aria-label=\"Quantit\u00e9 de produits\"\n                        min=\"1\"\n                        max=\"413\"\n                                                    step=\"1\"\n                            placeholder=\"\"\n                            inputmode=\"numeric\"\n                            autocomplete=\"off\"\n                                        \/>\n            <\/div>\n\n            <!-- Plus and Minus Buttons in their own div -->\n                            <div class=\"qty-btns-wrap\">\n                    <button type=\"button\" class=\"qty-btn-plus\" data-qty-action=\"increase\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                    <button type=\"button\" class=\"qty-btn-minus\" data-qty-action=\"decrease\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#232323\">\n                            <path d=\"M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n                    <\/div>\n\n            <\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n            'use strict';\n\n            console.log('=== QUANTITY INPUT SCRIPT LOADED ===');\n\n            var updateTimer;\n            var isProcessing = false;\n\n            \/\/ Remove any existing handlers that might conflict\n            $(document).off('.qtyCustom');\n            $('body').off('.qtyCustom');\n\n            function updateCart() {\n                console.log('updateCart() called!');\n                console.log('Current URL:', window.location.href);\n                console.log('Contains cart?', window.location.href.includes('cart'));\n                console.log('isProcessing?', isProcessing);\n\n                if (!window.location.href.includes('cart') || isProcessing) {\n                    console.log('Update skipped - not on cart page or already processing');\n                    return;\n                }\n\n                console.log('=== UPDATING CART ===');\n                isProcessing = true;\n\n                clearTimeout(updateTimer);\n                updateTimer = setTimeout(function() {\n                    \/\/ Method 1: Try to find and click update button\n                    var $updateBtn = $('button[name=\"update_cart\"], input[name=\"update_cart\"], .button[name=\"update_cart\"]');\n                    console.log('Found update buttons:', $updateBtn.length);\n\n                    if ($updateBtn.length) {\n                        console.log('Clicking update button...');\n                        $updateBtn.prop('disabled', false);\n                        $updateBtn[0].click(); \/\/ Use native click instead of jQuery\n                    } else {\n                        \/\/ Method 2: Try to submit the cart form\n                        console.log('No update button found, trying form submission...');\n                        var $cartForm = $('.woocommerce-cart-form, form.woocommerce-cart-form');\n                        console.log('Found cart forms:', $cartForm.length);\n\n                        if ($cartForm.length) {\n                            console.log('Submitting cart form...');\n                            $cartForm[0].submit(); \/\/ Native submit\n                        } else {\n                            \/\/ Method 3: Trigger WooCommerce cart update events\n                            console.log('No form found, triggering WC events...');\n                            $(document.body).trigger('wc_update_cart');\n                            $('body').trigger('update_checkout');\n\n                            \/\/ \/\/ Method 4: Last resort - page refresh\n                            \/\/ setTimeout(function() {\n                            \/\/     console.log('All methods failed, refreshing page...');\n                            \/\/     window.location.reload();\n                            \/\/ }, 3000);\n                        }\n                    }\n\n                    setTimeout(function() {\n                        isProcessing = false;\n                    }, 2000);\n                }, 100); \/\/ Reduced delay for faster response\n            }\n\n            \/\/ Single, clean event handler\n            $(document).on('click.qtyCustom', '[data-qty-action]', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n\n                var $button = $(this);\n                var action = $button.attr('data-qty-action');\n                var $input = $button.closest('.custom-qty-wrapper').find('input.qty');\n\n                if (!$input.length) {\n                    console.log('No input found!');\n                    return false;\n                }\n\n                var currentVal = parseInt($input.val()) || 0;\n                var min = parseInt($input.attr('min')) || 0;\n                var max = parseInt($input.attr('max')) || 999999;\n                var newVal = currentVal;\n\n                console.log('=== BUTTON CLICKED ===');\n                console.log('Action:', action);\n                console.log('Current value:', currentVal);\n                console.log('Min:', min, 'Max:', max);\n\n                if (action === 'increase' && currentVal < max) {\n                    newVal = currentVal + 1;\n                } else if (action === 'decrease' && currentVal > min) {\n                    newVal = currentVal - 1;\n                }\n\n                if (newVal !== currentVal) {\n                    console.log('Changing from', currentVal, 'to', newVal);\n                    $input.val(newVal);\n\n                    \/\/ Trigger change event to notify WooCommerce\n                    $input.trigger('change');\n                    $input.trigger('input'); \/\/ Some themes listen to input event\n\n                    \/\/ Wait a bit then update cart\n                    console.log('About to call updateCart in 50ms...');\n                    setTimeout(function() {\n                        console.log('setTimeout executed, calling updateCart...');\n                        updateCart();\n                    }, 50);\n                } else {\n                    console.log('No change - limits reached');\n                }\n\n                return false;\n            });\n\n            \/\/ Handle direct input changes (manual typing)\n            $(document).on('change.qtyCustom', 'input.qty', function(e) {\n                if (!$(this).data('button-changed')) {\n                    console.log('=== INPUT CHANGED MANUALLY ===');\n                    updateCart();\n                }\n                $(this).removeData('button-changed');\n            });\n\n            \/\/ Rebind after cart updates\n            $(document.body).on('updated_wc_div updated_cart_totals', function() {\n                console.log('=== CART UPDATED - EVENTS STILL ACTIVE ===');\n                \/\/ Les \u00e9v\u00e9nements sont d\u00e9j\u00e0 bind\u00e9s sur document, pas besoin de rebind\n            });\n\n            \/\/ Test function\n            setTimeout(function() {\n                var $buttons = $('[data-qty-action]');\n                console.log('=== FOUND', $buttons.length, 'QUANTITY BUTTONS ===');\n            }, 500);\n        });\n    <\/script>\n\n    <style>\n        .custom-qty-wrapper {\n            display: flex;\n            align-items: stretch;\n            justify-content: flex-start;\n        }\n\n        .qty-btns-wrap {\n            flex: 0;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .qty-input-wrap input,\n        .e-loop-add-to-cart-form .qty-input-wrap input,\n        .cart .qty-input-wrap input {\n            color: #232323 !important;\n            min-width: 3rem !important;\n            min-height: 100% !important;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-radius: 0 !important;\n            padding: .175rem .5rem !important;\n            font-family: \"Poppins\", Sans-serif !important;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus, .qty-btn-minus,\n        .e-loop-add-to-cart-form .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-minus {\n            padding: 0 3px;\n            display: flex;\n            border: 1px solid rgb(0, 0, 0, 1) !important;\n            border-left: 0px !important;\n            align-items: center;\n            justify-content: center;\n            border-radius: 0px !important;\n            transition: background-color 0.2s ease;\n            cursor: pointer;\n            background: white !important;\n            min-height: 24px;\n            min-width: 24px;\n            box-sizing: border-box !important;\n        }\n\n        .qty-btn-plus,\n        .e-loop-add-to-cart-form .qty-btn-plus {\n            border-bottom: 0px !important;\n        }\n\n        .qty-btn-plus svg, .qty-btn-minus svg,\n        .e-loop-add-to-cart-form .qty-btn-plus svg,\n        .e-loop-add-to-cart-form .qty-btn-minus svg {\n            width: 15px;\n            max-height: 19px;\n            pointer-events: none;\n        }\n\n        .qty-btn-plus:hover, .qty-btn-minus:hover,\n        .e-loop-add-to-cart-form .qty-btn-plus:hover,\n        .e-loop-add-to-cart-form .qty-btn-minus:hover {\n            background: #f1f1f1 !important;\n        }\n\n        .qty-btn-plus:active, .qty-btn-minus:active,\n        .e-loop-add-to-cart-form .qty-btn-plus:active,\n        .e-loop-add-to-cart-form .qty-btn-minus:active {\n            background: #e0e0e0 !important;\n        }\n\n        \/* Hide number input spinner for all browsers *\/\n        .qty.input-text.qty.text,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text {\n            -moz-appearance: textfield;\n        }\n\n        .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .qty.input-text.qty.text::-webkit-inner-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-outer-spin-button,\n        .e-loop-add-to-cart-form .qty.input-text.qty.text::-webkit-inner-spin-button {\n            -webkit-appearance: none;\n            margin: 0;\n        }\n\n        input.qty:focus,\n        .e-loop-add-to-cart-form input.qty:focus {\n            outline: none;\n            box-shadow: none;\n        }\n\n        input.qty,\n        .e-loop-add-to-cart-form input.qty {\n            outline: none;\n            box-shadow: none;\n        }\n    <\/style>\n\n<a href=\"?add-to-cart=5292\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_5292\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"5292\" data-product_sku=\"TAB_NOIR_75\" aria-label=\"Ajouter au panier\u00a0: &ldquo;Noir 75% de cacao&rdquo;\" rel=\"nofollow\" data-success_message=\"\u00ab\u00a0Noir 75% de cacao\u00a0\u00bb a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre panier\">Ajouter au panier<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_5292\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n\t\t\t<\/form>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-59cde78 elementor-section-full_width elementor-section-height-min-height filter_div elementor-hidden-desktop elementor-section-height-default\" data-id=\"59cde78\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-459f79f\" data-id=\"459f79f\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-84c5393 elementor-widget-mobile__width-auto close_filter_div elementor-widget elementor-widget-jet-smart-filters-apply-button\" data-id=\"84c5393\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"jet-smart-filters-apply-button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"jet-smart-filters-apply-button jet-filter\"><div class=\"apply-filters\"  data-content-provider=\"epro-loop-builder\" data-query-id=\"product_grid\" data-additional-providers=\"\" data-apply-type=\"ajax\" data-redirect=\"\">\n\t<button\n\t\ttype=\"button\"\n\t\tclass=\"apply-filters__button\"\n\t\t\t\t\t>Ok<\/button>\n<\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-6353334 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"6353334\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-e610cc0\" data-id=\"e610cc0\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-15f4752 label_1 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"15f4752\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-c945467\" data-id=\"c945467\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-d1edf41 elementor-widget elementor-widget-heading\" data-id=\"d1edf41\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Type de Caf\u00e9s<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<div class=\"elementor-element elementor-element-6703ecf filter_1 elementor-widget elementor-widget-jet-smart-filters-checkboxes\" data-id=\"6703ecf\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"jet-smart-filters-checkboxes.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"jet-smart-filters-checkboxes jet-filter jet-filter-indexed\" data-indexer-rule=\"show\" data-show-counter=\"yes\" data-change-counter=\"other_changed\"><div class=\"jet-checkboxes-list\" data-query-type=\"meta_query\" data-query-var=\"_stock_status\" data-smart-filter=\"checkboxes\" data-filter-id=\"5163\" data-apply-type=\"ajax\" data-content-provider=\"epro-loop-builder\" data-additional-providers=\"\" data-query-id=\"product_grid\" data-active-label=\"\" data-layout-options=\"{&quot;show_label&quot;:&quot;&quot;,&quot;display_options&quot;:{&quot;show_items_label&quot;:false,&quot;show_decorator&quot;:&quot;yes&quot;,&quot;filter_image_size&quot;:&quot;full&quot;,&quot;show_counter&quot;:&quot;yes&quot;,&quot;counter_prefix&quot;:&quot;(&quot;,&quot;counter_suffix&quot;:&quot;)&quot;}}\" data-query-var-suffix=\"\" data-apply-on=\"submit\"><fieldset class=\"jet-checkboxes-list-wrapper\"><legend style=\"display:none;\">Disponibilit\u00e9<\/legend><div class=\"jet-checkboxes-list__row jet-filter-row\">\n\t\t<label class=\"jet-checkboxes-list__item\" >\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\tclass=\"jet-checkboxes-list__input\"\n\t\t\tname=\"_stock_status\"\n\t\t\tvalue=\"instock\"\n\t\t\tdata-label=\"En stock\"\n\t\t\taria-label=\"En stock\"\n\t\t\t\t\t>\n\t\t<div class=\"jet-checkboxes-list__button\">\n\t\t\t\t\t\t\t<span class=\"jet-checkboxes-list__decorator\">\n\t\t\t\t\t<i class=\"jet-checkboxes-list__checked-icon\"><svg width=\"28\" height=\"28\" viewBox=\"0 0 28 28\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t<path d=\"M26.109 8.844c0 0.391-0.156 0.781-0.438 1.062l-13.438 13.438c-0.281 0.281-0.672 0.438-1.062 0.438s-0.781-0.156-1.062-0.438l-7.781-7.781c-0.281-0.281-0.438-0.672-0.438-1.062s0.156-0.781 0.438-1.062l2.125-2.125c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l4.594 4.609 10.25-10.266c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l2.125 2.125c0.281 0.281 0.438 0.672 0.438 1.062z\"><\/path>\n<\/svg>\n<\/i>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"jet-checkboxes-list__label\">En stock<\/span>\n\t\t\t<span class=\"jet-filters-counter\"><span class=\"counter-prefix\">(<\/span><span class=\"value\">0<\/span><span class=\"counter-suffix\">)<\/span><\/span>\t\t<\/div>\n\t<\/label>\n<\/div><div class=\"jet-checkboxes-list__row jet-filter-row\">\n\t\t<label class=\"jet-checkboxes-list__item\" >\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\tclass=\"jet-checkboxes-list__input\"\n\t\t\tname=\"_stock_status\"\n\t\t\tvalue=\"outofstock\"\n\t\t\tdata-label=\"Non disponible\"\n\t\t\taria-label=\"Non disponible\"\n\t\t\t\t\t>\n\t\t<div class=\"jet-checkboxes-list__button\">\n\t\t\t\t\t\t\t<span class=\"jet-checkboxes-list__decorator\">\n\t\t\t\t\t<i class=\"jet-checkboxes-list__checked-icon\"><svg width=\"28\" height=\"28\" viewBox=\"0 0 28 28\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t<path d=\"M26.109 8.844c0 0.391-0.156 0.781-0.438 1.062l-13.438 13.438c-0.281 0.281-0.672 0.438-1.062 0.438s-0.781-0.156-1.062-0.438l-7.781-7.781c-0.281-0.281-0.438-0.672-0.438-1.062s0.156-0.781 0.438-1.062l2.125-2.125c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l4.594 4.609 10.25-10.266c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l2.125 2.125c0.281 0.281 0.438 0.672 0.438 1.062z\"><\/path>\n<\/svg>\n<\/i>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"jet-checkboxes-list__label\">Non disponible<\/span>\n\t\t\t<span class=\"jet-filters-counter\"><span class=\"counter-prefix\">(<\/span><span class=\"value\">0<\/span><span class=\"counter-suffix\">)<\/span><\/span>\t\t<\/div>\n\t<\/label>\n<\/div><\/fieldset><\/div>\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ffdb19b elementor-widget elementor-widget-jet-smart-filters-checkboxes\" data-id=\"ffdb19b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"jet-smart-filters-checkboxes.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"jet-smart-filters-checkboxes jet-filter jet-filter-indexed\" data-indexer-rule=\"show\" data-show-counter=\"yes\" data-change-counter=\"other_changed\"><div class=\"jet-filter-label\">type de produit<\/div>\n<div class=\"jet-checkboxes-list\" data-query-type=\"tax_query\" data-query-var=\"product_cat\" data-smart-filter=\"checkboxes\" data-filter-id=\"15111\" data-apply-type=\"ajax\" data-content-provider=\"epro-loop-builder\" data-additional-providers=\"\" data-query-id=\"product_grid\" data-active-label=\"\" data-layout-options=\"{&quot;show_label&quot;:true,&quot;display_options&quot;:{&quot;show_items_label&quot;:false,&quot;show_decorator&quot;:&quot;yes&quot;,&quot;filter_image_size&quot;:&quot;full&quot;,&quot;show_counter&quot;:&quot;yes&quot;,&quot;counter_prefix&quot;:&quot;(&quot;,&quot;counter_suffix&quot;:&quot;)&quot;}}\" data-query-var-suffix=\"\" data-apply-on=\"value\"><fieldset class=\"jet-checkboxes-list-wrapper\"><legend style=\"display:none;\">type de produit<\/legend><div class=\"jet-list-tree\"><div class=\"jet-checkboxes-list__row jet-filter-row jet-list-tree__parent\">\n\t\t<label class=\"jet-checkboxes-list__item\" >\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\tclass=\"jet-checkboxes-list__input\"\n\t\t\tname=\"product_cat\"\n\t\t\tvalue=\"20\"\n\t\t\tdata-label=\"Accessoires\"\n\t\t\taria-label=\"Accessoires\"\n\t\t\t\t\t>\n\t\t<div class=\"jet-checkboxes-list__button\">\n\t\t\t\t\t\t\t<span class=\"jet-checkboxes-list__decorator\">\n\t\t\t\t\t<i class=\"jet-checkboxes-list__checked-icon\"><svg width=\"28\" height=\"28\" viewBox=\"0 0 28 28\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t<path d=\"M26.109 8.844c0 0.391-0.156 0.781-0.438 1.062l-13.438 13.438c-0.281 0.281-0.672 0.438-1.062 0.438s-0.781-0.156-1.062-0.438l-7.781-7.781c-0.281-0.281-0.438-0.672-0.438-1.062s0.156-0.781 0.438-1.062l2.125-2.125c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l4.594 4.609 10.25-10.266c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l2.125 2.125c0.281 0.281 0.438 0.672 0.438 1.062z\"><\/path>\n<\/svg>\n<\/i>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"jet-checkboxes-list__label\">Accessoires<\/span>\n\t\t\t<span class=\"jet-filters-counter\"><span class=\"counter-prefix\">(<\/span><span class=\"value\">0<\/span><span class=\"counter-suffix\">)<\/span><\/span>\t\t<\/div>\n\t<\/label>\n<\/div><div class='jet-list-tree__children'>\n<div class=\"jet-checkboxes-list__row jet-filter-row\">\n\t\t<label class=\"jet-checkboxes-list__item\" >\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\tclass=\"jet-checkboxes-list__input\"\n\t\t\tname=\"product_cat\"\n\t\t\tvalue=\"613\"\n\t\t\tdata-label=\"Tasses et Mugs\"\n\t\t\taria-label=\"Tasses et Mugs\"\n\t\t\t\t\t>\n\t\t<div class=\"jet-checkboxes-list__button\">\n\t\t\t\t\t\t\t<span class=\"jet-checkboxes-list__decorator\">\n\t\t\t\t\t<i class=\"jet-checkboxes-list__checked-icon\"><svg width=\"28\" height=\"28\" viewBox=\"0 0 28 28\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t<path d=\"M26.109 8.844c0 0.391-0.156 0.781-0.438 1.062l-13.438 13.438c-0.281 0.281-0.672 0.438-1.062 0.438s-0.781-0.156-1.062-0.438l-7.781-7.781c-0.281-0.281-0.438-0.672-0.438-1.062s0.156-0.781 0.438-1.062l2.125-2.125c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l4.594 4.609 10.25-10.266c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l2.125 2.125c0.281 0.281 0.438 0.672 0.438 1.062z\"><\/path>\n<\/svg>\n<\/i>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"jet-checkboxes-list__label\">Tasses et Mugs<\/span>\n\t\t\t<span class=\"jet-filters-counter\"><span class=\"counter-prefix\">(<\/span><span class=\"value\">0<\/span><span class=\"counter-suffix\">)<\/span><\/span>\t\t<\/div>\n\t<\/label>\n<\/div><div class=\"jet-checkboxes-list__row jet-filter-row\">\n\t\t<label class=\"jet-checkboxes-list__item\" >\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\tclass=\"jet-checkboxes-list__input\"\n\t\t\tname=\"product_cat\"\n\t\t\tvalue=\"612\"\n\t\t\tdata-label=\"Textiles\"\n\t\t\taria-label=\"Textiles\"\n\t\t\t\t\t>\n\t\t<div class=\"jet-checkboxes-list__button\">\n\t\t\t\t\t\t\t<span class=\"jet-checkboxes-list__decorator\">\n\t\t\t\t\t<i class=\"jet-checkboxes-list__checked-icon\"><svg width=\"28\" height=\"28\" viewBox=\"0 0 28 28\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t<path d=\"M26.109 8.844c0 0.391-0.156 0.781-0.438 1.062l-13.438 13.438c-0.281 0.281-0.672 0.438-1.062 0.438s-0.781-0.156-1.062-0.438l-7.781-7.781c-0.281-0.281-0.438-0.672-0.438-1.062s0.156-0.781 0.438-1.062l2.125-2.125c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l4.594 4.609 10.25-10.266c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l2.125 2.125c0.281 0.281 0.438 0.672 0.438 1.062z\"><\/path>\n<\/svg>\n<\/i>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"jet-checkboxes-list__label\">Textiles<\/span>\n\t\t\t<span class=\"jet-filters-counter\"><span class=\"counter-prefix\">(<\/span><span class=\"value\">0<\/span><span class=\"counter-suffix\">)<\/span><\/span>\t\t<\/div>\n\t<\/label>\n<\/div><div class=\"jet-checkboxes-list__row jet-filter-row\">\n\t\t<label class=\"jet-checkboxes-list__item\" >\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\tclass=\"jet-checkboxes-list__input\"\n\t\t\tname=\"product_cat\"\n\t\t\tvalue=\"547\"\n\t\t\tdata-label=\"Moulins \u00e0 caf\u00e9\"\n\t\t\taria-label=\"Moulins \u00e0 caf\u00e9\"\n\t\t\t\t\t>\n\t\t<div class=\"jet-checkboxes-list__button\">\n\t\t\t\t\t\t\t<span class=\"jet-checkboxes-list__decorator\">\n\t\t\t\t\t<i class=\"jet-checkboxes-list__checked-icon\"><svg width=\"28\" height=\"28\" viewBox=\"0 0 28 28\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t<path d=\"M26.109 8.844c0 0.391-0.156 0.781-0.438 1.062l-13.438 13.438c-0.281 0.281-0.672 0.438-1.062 0.438s-0.781-0.156-1.062-0.438l-7.781-7.781c-0.281-0.281-0.438-0.672-0.438-1.062s0.156-0.781 0.438-1.062l2.125-2.125c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l4.594 4.609 10.25-10.266c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l2.125 2.125c0.281 0.281 0.438 0.672 0.438 1.062z\"><\/path>\n<\/svg>\n<\/i>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"jet-checkboxes-list__label\">Moulins \u00e0 caf\u00e9<\/span>\n\t\t\t<span class=\"jet-filters-counter\"><span class=\"counter-prefix\">(<\/span><span class=\"value\">0<\/span><span class=\"counter-suffix\">)<\/span><\/span>\t\t<\/div>\n\t<\/label>\n<\/div><\/div>\n<div class=\"jet-checkboxes-list__row jet-filter-row\">\n\t\t<label class=\"jet-checkboxes-list__item\" >\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\tclass=\"jet-checkboxes-list__input\"\n\t\t\tname=\"product_cat\"\n\t\t\tvalue=\"546\"\n\t\t\tdata-label=\"APE\"\n\t\t\taria-label=\"APE\"\n\t\t\t\t\t>\n\t\t<div class=\"jet-checkboxes-list__button\">\n\t\t\t\t\t\t\t<span class=\"jet-checkboxes-list__decorator\">\n\t\t\t\t\t<i class=\"jet-checkboxes-list__checked-icon\"><svg width=\"28\" height=\"28\" viewBox=\"0 0 28 28\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t<path d=\"M26.109 8.844c0 0.391-0.156 0.781-0.438 1.062l-13.438 13.438c-0.281 0.281-0.672 0.438-1.062 0.438s-0.781-0.156-1.062-0.438l-7.781-7.781c-0.281-0.281-0.438-0.672-0.438-1.062s0.156-0.781 0.438-1.062l2.125-2.125c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l4.594 4.609 10.25-10.266c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l2.125 2.125c0.281 0.281 0.438 0.672 0.438 1.062z\"><\/path>\n<\/svg>\n<\/i>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"jet-checkboxes-list__label\">APE<\/span>\n\t\t\t<span class=\"jet-filters-counter\"><span class=\"counter-prefix\">(<\/span><span class=\"value\">0<\/span><span class=\"counter-suffix\">)<\/span><\/span>\t\t<\/div>\n\t<\/label>\n<\/div><div class=\"jet-checkboxes-list__row jet-filter-row jet-list-tree__parent\">\n\t\t<label class=\"jet-checkboxes-list__item\" >\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\tclass=\"jet-checkboxes-list__input\"\n\t\t\tname=\"product_cat\"\n\t\t\tvalue=\"242\"\n\t\t\tdata-label=\"Caf\u00e9\"\n\t\t\taria-label=\"Caf\u00e9\"\n\t\t\t\t\t>\n\t\t<div class=\"jet-checkboxes-list__button\">\n\t\t\t\t\t\t\t<span class=\"jet-checkboxes-list__decorator\">\n\t\t\t\t\t<i class=\"jet-checkboxes-list__checked-icon\"><svg width=\"28\" height=\"28\" viewBox=\"0 0 28 28\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t<path d=\"M26.109 8.844c0 0.391-0.156 0.781-0.438 1.062l-13.438 13.438c-0.281 0.281-0.672 0.438-1.062 0.438s-0.781-0.156-1.062-0.438l-7.781-7.781c-0.281-0.281-0.438-0.672-0.438-1.062s0.156-0.781 0.438-1.062l2.125-2.125c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l4.594 4.609 10.25-10.266c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l2.125 2.125c0.281 0.281 0.438 0.672 0.438 1.062z\"><\/path>\n<\/svg>\n<\/i>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"jet-checkboxes-list__label\">Caf\u00e9<\/span>\n\t\t\t<span class=\"jet-filters-counter\"><span class=\"counter-prefix\">(<\/span><span class=\"value\">0<\/span><span class=\"counter-suffix\">)<\/span><\/span>\t\t<\/div>\n\t<\/label>\n<\/div><div class='jet-list-tree__children'>\n<div class=\"jet-checkboxes-list__row jet-filter-row\">\n\t\t<label class=\"jet-checkboxes-list__item\" >\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\tclass=\"jet-checkboxes-list__input\"\n\t\t\tname=\"product_cat\"\n\t\t\tvalue=\"590\"\n\t\t\tdata-label=\"Caf\u00e9 en grains\"\n\t\t\taria-label=\"Caf\u00e9 en grains\"\n\t\t\t\t\t>\n\t\t<div class=\"jet-checkboxes-list__button\">\n\t\t\t\t\t\t\t<span class=\"jet-checkboxes-list__decorator\">\n\t\t\t\t\t<i class=\"jet-checkboxes-list__checked-icon\"><svg width=\"28\" height=\"28\" viewBox=\"0 0 28 28\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t<path d=\"M26.109 8.844c0 0.391-0.156 0.781-0.438 1.062l-13.438 13.438c-0.281 0.281-0.672 0.438-1.062 0.438s-0.781-0.156-1.062-0.438l-7.781-7.781c-0.281-0.281-0.438-0.672-0.438-1.062s0.156-0.781 0.438-1.062l2.125-2.125c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l4.594 4.609 10.25-10.266c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l2.125 2.125c0.281 0.281 0.438 0.672 0.438 1.062z\"><\/path>\n<\/svg>\n<\/i>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"jet-checkboxes-list__label\">Caf\u00e9 en grains<\/span>\n\t\t\t<span class=\"jet-filters-counter\"><span class=\"counter-prefix\">(<\/span><span class=\"value\">0<\/span><span class=\"counter-suffix\">)<\/span><\/span>\t\t<\/div>\n\t<\/label>\n<\/div><div class=\"jet-checkboxes-list__row jet-filter-row\">\n\t\t<label class=\"jet-checkboxes-list__item\" >\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\tclass=\"jet-checkboxes-list__input\"\n\t\t\tname=\"product_cat\"\n\t\t\tvalue=\"591\"\n\t\t\tdata-label=\"Caf\u00e9 moulu\"\n\t\t\taria-label=\"Caf\u00e9 moulu\"\n\t\t\t\t\t>\n\t\t<div class=\"jet-checkboxes-list__button\">\n\t\t\t\t\t\t\t<span class=\"jet-checkboxes-list__decorator\">\n\t\t\t\t\t<i class=\"jet-checkboxes-list__checked-icon\"><svg width=\"28\" height=\"28\" viewBox=\"0 0 28 28\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t<path d=\"M26.109 8.844c0 0.391-0.156 0.781-0.438 1.062l-13.438 13.438c-0.281 0.281-0.672 0.438-1.062 0.438s-0.781-0.156-1.062-0.438l-7.781-7.781c-0.281-0.281-0.438-0.672-0.438-1.062s0.156-0.781 0.438-1.062l2.125-2.125c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l4.594 4.609 10.25-10.266c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l2.125 2.125c0.281 0.281 0.438 0.672 0.438 1.062z\"><\/path>\n<\/svg>\n<\/i>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"jet-checkboxes-list__label\">Caf\u00e9 moulu<\/span>\n\t\t\t<span class=\"jet-filters-counter\"><span class=\"counter-prefix\">(<\/span><span class=\"value\">0<\/span><span class=\"counter-suffix\">)<\/span><\/span>\t\t<\/div>\n\t<\/label>\n<\/div><\/div>\n<div class=\"jet-checkboxes-list__row jet-filter-row jet-list-tree__parent\">\n\t\t<label class=\"jet-checkboxes-list__item\" >\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\tclass=\"jet-checkboxes-list__input\"\n\t\t\tname=\"product_cat\"\n\t\t\tvalue=\"42\"\n\t\t\tdata-label=\"Chocolat\"\n\t\t\taria-label=\"Chocolat\"\n\t\t\t\t\t>\n\t\t<div class=\"jet-checkboxes-list__button\">\n\t\t\t\t\t\t\t<span class=\"jet-checkboxes-list__decorator\">\n\t\t\t\t\t<i class=\"jet-checkboxes-list__checked-icon\"><svg width=\"28\" height=\"28\" viewBox=\"0 0 28 28\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t<path d=\"M26.109 8.844c0 0.391-0.156 0.781-0.438 1.062l-13.438 13.438c-0.281 0.281-0.672 0.438-1.062 0.438s-0.781-0.156-1.062-0.438l-7.781-7.781c-0.281-0.281-0.438-0.672-0.438-1.062s0.156-0.781 0.438-1.062l2.125-2.125c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l4.594 4.609 10.25-10.266c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l2.125 2.125c0.281 0.281 0.438 0.672 0.438 1.062z\"><\/path>\n<\/svg>\n<\/i>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"jet-checkboxes-list__label\">Chocolat<\/span>\n\t\t\t<span class=\"jet-filters-counter\"><span class=\"counter-prefix\">(<\/span><span class=\"value\">0<\/span><span class=\"counter-suffix\">)<\/span><\/span>\t\t<\/div>\n\t<\/label>\n<\/div><div class='jet-list-tree__children'>\n<div class=\"jet-checkboxes-list__row jet-filter-row\">\n\t\t<label class=\"jet-checkboxes-list__item\" >\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\tclass=\"jet-checkboxes-list__input\"\n\t\t\tname=\"product_cat\"\n\t\t\tvalue=\"609\"\n\t\t\tdata-label=\"Tablettes\"\n\t\t\taria-label=\"Tablettes\"\n\t\t\t\t\t>\n\t\t<div class=\"jet-checkboxes-list__button\">\n\t\t\t\t\t\t\t<span class=\"jet-checkboxes-list__decorator\">\n\t\t\t\t\t<i class=\"jet-checkboxes-list__checked-icon\"><svg width=\"28\" height=\"28\" viewBox=\"0 0 28 28\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t<path d=\"M26.109 8.844c0 0.391-0.156 0.781-0.438 1.062l-13.438 13.438c-0.281 0.281-0.672 0.438-1.062 0.438s-0.781-0.156-1.062-0.438l-7.781-7.781c-0.281-0.281-0.438-0.672-0.438-1.062s0.156-0.781 0.438-1.062l2.125-2.125c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l4.594 4.609 10.25-10.266c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l2.125 2.125c0.281 0.281 0.438 0.672 0.438 1.062z\"><\/path>\n<\/svg>\n<\/i>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"jet-checkboxes-list__label\">Tablettes<\/span>\n\t\t\t<span class=\"jet-filters-counter\"><span class=\"counter-prefix\">(<\/span><span class=\"value\">0<\/span><span class=\"counter-suffix\">)<\/span><\/span>\t\t<\/div>\n\t<\/label>\n<\/div><div class=\"jet-checkboxes-list__row jet-filter-row\">\n\t\t<label class=\"jet-checkboxes-list__item\" >\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\tclass=\"jet-checkboxes-list__input\"\n\t\t\tname=\"product_cat\"\n\t\t\tvalue=\"611\"\n\t\t\tdata-label=\"Pistoles\"\n\t\t\taria-label=\"Pistoles\"\n\t\t\t\t\t>\n\t\t<div class=\"jet-checkboxes-list__button\">\n\t\t\t\t\t\t\t<span class=\"jet-checkboxes-list__decorator\">\n\t\t\t\t\t<i class=\"jet-checkboxes-list__checked-icon\"><svg width=\"28\" height=\"28\" viewBox=\"0 0 28 28\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t<path d=\"M26.109 8.844c0 0.391-0.156 0.781-0.438 1.062l-13.438 13.438c-0.281 0.281-0.672 0.438-1.062 0.438s-0.781-0.156-1.062-0.438l-7.781-7.781c-0.281-0.281-0.438-0.672-0.438-1.062s0.156-0.781 0.438-1.062l2.125-2.125c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l4.594 4.609 10.25-10.266c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l2.125 2.125c0.281 0.281 0.438 0.672 0.438 1.062z\"><\/path>\n<\/svg>\n<\/i>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"jet-checkboxes-list__label\">Pistoles<\/span>\n\t\t\t<span class=\"jet-filters-counter\"><span class=\"counter-prefix\">(<\/span><span class=\"value\">0<\/span><span class=\"counter-suffix\">)<\/span><\/span>\t\t<\/div>\n\t<\/label>\n<\/div><div class=\"jet-checkboxes-list__row jet-filter-row\">\n\t\t<label class=\"jet-checkboxes-list__item\" >\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\tclass=\"jet-checkboxes-list__input\"\n\t\t\tname=\"product_cat\"\n\t\t\tvalue=\"610\"\n\t\t\tdata-label=\"Napolitains\"\n\t\t\taria-label=\"Napolitains\"\n\t\t\t\t\t>\n\t\t<div class=\"jet-checkboxes-list__button\">\n\t\t\t\t\t\t\t<span class=\"jet-checkboxes-list__decorator\">\n\t\t\t\t\t<i class=\"jet-checkboxes-list__checked-icon\"><svg width=\"28\" height=\"28\" viewBox=\"0 0 28 28\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t<path d=\"M26.109 8.844c0 0.391-0.156 0.781-0.438 1.062l-13.438 13.438c-0.281 0.281-0.672 0.438-1.062 0.438s-0.781-0.156-1.062-0.438l-7.781-7.781c-0.281-0.281-0.438-0.672-0.438-1.062s0.156-0.781 0.438-1.062l2.125-2.125c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l4.594 4.609 10.25-10.266c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l2.125 2.125c0.281 0.281 0.438 0.672 0.438 1.062z\"><\/path>\n<\/svg>\n<\/i>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"jet-checkboxes-list__label\">Napolitains<\/span>\n\t\t\t<span class=\"jet-filters-counter\"><span class=\"counter-prefix\">(<\/span><span class=\"value\">0<\/span><span class=\"counter-suffix\">)<\/span><\/span>\t\t<\/div>\n\t<\/label>\n<\/div><\/div>\n<div class=\"jet-checkboxes-list__row jet-filter-row\">\n\t\t<label class=\"jet-checkboxes-list__item\" >\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\tclass=\"jet-checkboxes-list__input\"\n\t\t\tname=\"product_cat\"\n\t\t\tvalue=\"45\"\n\t\t\tdata-label=\"Coffrets\"\n\t\t\taria-label=\"Coffrets\"\n\t\t\t\t\t>\n\t\t<div class=\"jet-checkboxes-list__button\">\n\t\t\t\t\t\t\t<span class=\"jet-checkboxes-list__decorator\">\n\t\t\t\t\t<i class=\"jet-checkboxes-list__checked-icon\"><svg width=\"28\" height=\"28\" viewBox=\"0 0 28 28\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t<path d=\"M26.109 8.844c0 0.391-0.156 0.781-0.438 1.062l-13.438 13.438c-0.281 0.281-0.672 0.438-1.062 0.438s-0.781-0.156-1.062-0.438l-7.781-7.781c-0.281-0.281-0.438-0.672-0.438-1.062s0.156-0.781 0.438-1.062l2.125-2.125c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l4.594 4.609 10.25-10.266c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l2.125 2.125c0.281 0.281 0.438 0.672 0.438 1.062z\"><\/path>\n<\/svg>\n<\/i>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"jet-checkboxes-list__label\">Coffrets<\/span>\n\t\t\t<span class=\"jet-filters-counter\"><span class=\"counter-prefix\">(<\/span><span class=\"value\">0<\/span><span class=\"counter-suffix\">)<\/span><\/span>\t\t<\/div>\n\t<\/label>\n<\/div><div class=\"jet-checkboxes-list__row jet-filter-row jet-list-tree__parent\">\n\t\t<label class=\"jet-checkboxes-list__item\" >\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\tclass=\"jet-checkboxes-list__input\"\n\t\t\tname=\"product_cat\"\n\t\t\tvalue=\"469\"\n\t\t\tdata-label=\"Gourmandises\"\n\t\t\taria-label=\"Gourmandises\"\n\t\t\t\t\t>\n\t\t<div class=\"jet-checkboxes-list__button\">\n\t\t\t\t\t\t\t<span class=\"jet-checkboxes-list__decorator\">\n\t\t\t\t\t<i class=\"jet-checkboxes-list__checked-icon\"><svg width=\"28\" height=\"28\" viewBox=\"0 0 28 28\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t<path d=\"M26.109 8.844c0 0.391-0.156 0.781-0.438 1.062l-13.438 13.438c-0.281 0.281-0.672 0.438-1.062 0.438s-0.781-0.156-1.062-0.438l-7.781-7.781c-0.281-0.281-0.438-0.672-0.438-1.062s0.156-0.781 0.438-1.062l2.125-2.125c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l4.594 4.609 10.25-10.266c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l2.125 2.125c0.281 0.281 0.438 0.672 0.438 1.062z\"><\/path>\n<\/svg>\n<\/i>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"jet-checkboxes-list__label\">Gourmandises<\/span>\n\t\t\t<span class=\"jet-filters-counter\"><span class=\"counter-prefix\">(<\/span><span class=\"value\">0<\/span><span class=\"counter-suffix\">)<\/span><\/span>\t\t<\/div>\n\t<\/label>\n<\/div><div class='jet-list-tree__children'>\n<div class=\"jet-checkboxes-list__row jet-filter-row\">\n\t\t<label class=\"jet-checkboxes-list__item\" >\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\tclass=\"jet-checkboxes-list__input\"\n\t\t\tname=\"product_cat\"\n\t\t\tvalue=\"608\"\n\t\t\tdata-label=\"Sachets\"\n\t\t\taria-label=\"Sachets\"\n\t\t\t\t\t>\n\t\t<div class=\"jet-checkboxes-list__button\">\n\t\t\t\t\t\t\t<span class=\"jet-checkboxes-list__decorator\">\n\t\t\t\t\t<i class=\"jet-checkboxes-list__checked-icon\"><svg width=\"28\" height=\"28\" viewBox=\"0 0 28 28\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t<path d=\"M26.109 8.844c0 0.391-0.156 0.781-0.438 1.062l-13.438 13.438c-0.281 0.281-0.672 0.438-1.062 0.438s-0.781-0.156-1.062-0.438l-7.781-7.781c-0.281-0.281-0.438-0.672-0.438-1.062s0.156-0.781 0.438-1.062l2.125-2.125c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l4.594 4.609 10.25-10.266c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l2.125 2.125c0.281 0.281 0.438 0.672 0.438 1.062z\"><\/path>\n<\/svg>\n<\/i>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"jet-checkboxes-list__label\">Sachets<\/span>\n\t\t\t<span class=\"jet-filters-counter\"><span class=\"counter-prefix\">(<\/span><span class=\"value\">0<\/span><span class=\"counter-suffix\">)<\/span><\/span>\t\t<\/div>\n\t<\/label>\n<\/div><div class=\"jet-checkboxes-list__row jet-filter-row\">\n\t\t<label class=\"jet-checkboxes-list__item\" >\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\tclass=\"jet-checkboxes-list__input\"\n\t\t\tname=\"product_cat\"\n\t\t\tvalue=\"607\"\n\t\t\tdata-label=\"\u00c0 Tartiner\"\n\t\t\taria-label=\"\u00c0 Tartiner\"\n\t\t\t\t\t>\n\t\t<div class=\"jet-checkboxes-list__button\">\n\t\t\t\t\t\t\t<span class=\"jet-checkboxes-list__decorator\">\n\t\t\t\t\t<i class=\"jet-checkboxes-list__checked-icon\"><svg width=\"28\" height=\"28\" viewBox=\"0 0 28 28\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t<path d=\"M26.109 8.844c0 0.391-0.156 0.781-0.438 1.062l-13.438 13.438c-0.281 0.281-0.672 0.438-1.062 0.438s-0.781-0.156-1.062-0.438l-7.781-7.781c-0.281-0.281-0.438-0.672-0.438-1.062s0.156-0.781 0.438-1.062l2.125-2.125c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l4.594 4.609 10.25-10.266c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l2.125 2.125c0.281 0.281 0.438 0.672 0.438 1.062z\"><\/path>\n<\/svg>\n<\/i>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"jet-checkboxes-list__label\">\u00c0 Tartiner<\/span>\n\t\t\t<span class=\"jet-filters-counter\"><span class=\"counter-prefix\">(<\/span><span class=\"value\">0<\/span><span class=\"counter-suffix\">)<\/span><\/span>\t\t<\/div>\n\t<\/label>\n<\/div><\/div>\n<div class=\"jet-checkboxes-list__row jet-filter-row\">\n\t\t<label class=\"jet-checkboxes-list__item\" >\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\tclass=\"jet-checkboxes-list__input\"\n\t\t\tname=\"product_cat\"\n\t\t\tvalue=\"241\"\n\t\t\tdata-label=\"Non class\u00e9\"\n\t\t\taria-label=\"Non class\u00e9\"\n\t\t\t\t\t>\n\t\t<div class=\"jet-checkboxes-list__button\">\n\t\t\t\t\t\t\t<span class=\"jet-checkboxes-list__decorator\">\n\t\t\t\t\t<i class=\"jet-checkboxes-list__checked-icon\"><svg width=\"28\" height=\"28\" viewBox=\"0 0 28 28\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t<path d=\"M26.109 8.844c0 0.391-0.156 0.781-0.438 1.062l-13.438 13.438c-0.281 0.281-0.672 0.438-1.062 0.438s-0.781-0.156-1.062-0.438l-7.781-7.781c-0.281-0.281-0.438-0.672-0.438-1.062s0.156-0.781 0.438-1.062l2.125-2.125c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l4.594 4.609 10.25-10.266c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l2.125 2.125c0.281 0.281 0.438 0.672 0.438 1.062z\"><\/path>\n<\/svg>\n<\/i>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"jet-checkboxes-list__label\">Non class\u00e9<\/span>\n\t\t\t<span class=\"jet-filters-counter\"><span class=\"counter-prefix\">(<\/span><span class=\"value\">0<\/span><span class=\"counter-suffix\">)<\/span><\/span>\t\t<\/div>\n\t<\/label>\n<\/div><div class=\"jet-checkboxes-list__row jet-filter-row\">\n\t\t<label class=\"jet-checkboxes-list__item\" >\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\tclass=\"jet-checkboxes-list__input\"\n\t\t\tname=\"product_cat\"\n\t\t\tvalue=\"46\"\n\t\t\tdata-label=\"Nos produits festifs\"\n\t\t\taria-label=\"Nos produits festifs\"\n\t\t\t\t\t>\n\t\t<div class=\"jet-checkboxes-list__button\">\n\t\t\t\t\t\t\t<span class=\"jet-checkboxes-list__decorator\">\n\t\t\t\t\t<i class=\"jet-checkboxes-list__checked-icon\"><svg width=\"28\" height=\"28\" viewBox=\"0 0 28 28\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t<path d=\"M26.109 8.844c0 0.391-0.156 0.781-0.438 1.062l-13.438 13.438c-0.281 0.281-0.672 0.438-1.062 0.438s-0.781-0.156-1.062-0.438l-7.781-7.781c-0.281-0.281-0.438-0.672-0.438-1.062s0.156-0.781 0.438-1.062l2.125-2.125c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l4.594 4.609 10.25-10.266c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l2.125 2.125c0.281 0.281 0.438 0.672 0.438 1.062z\"><\/path>\n<\/svg>\n<\/i>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"jet-checkboxes-list__label\">Nos produits festifs<\/span>\n\t\t\t<span class=\"jet-filters-counter\"><span class=\"counter-prefix\">(<\/span><span class=\"value\">0<\/span><span class=\"counter-suffix\">)<\/span><\/span>\t\t<\/div>\n\t<\/label>\n<\/div><div class=\"jet-checkboxes-list__row jet-filter-row\">\n\t\t<label class=\"jet-checkboxes-list__item\" >\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\tclass=\"jet-checkboxes-list__input\"\n\t\t\tname=\"product_cat\"\n\t\t\tvalue=\"47\"\n\t\t\tdata-label=\"Offres du moment\"\n\t\t\taria-label=\"Offres du moment\"\n\t\t\t\t\t>\n\t\t<div class=\"jet-checkboxes-list__button\">\n\t\t\t\t\t\t\t<span class=\"jet-checkboxes-list__decorator\">\n\t\t\t\t\t<i class=\"jet-checkboxes-list__checked-icon\"><svg width=\"28\" height=\"28\" viewBox=\"0 0 28 28\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t<path d=\"M26.109 8.844c0 0.391-0.156 0.781-0.438 1.062l-13.438 13.438c-0.281 0.281-0.672 0.438-1.062 0.438s-0.781-0.156-1.062-0.438l-7.781-7.781c-0.281-0.281-0.438-0.672-0.438-1.062s0.156-0.781 0.438-1.062l2.125-2.125c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l4.594 4.609 10.25-10.266c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l2.125 2.125c0.281 0.281 0.438 0.672 0.438 1.062z\"><\/path>\n<\/svg>\n<\/i>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"jet-checkboxes-list__label\">Offres du moment<\/span>\n\t\t\t<span class=\"jet-filters-counter\"><span class=\"counter-prefix\">(<\/span><span class=\"value\">0<\/span><span class=\"counter-suffix\">)<\/span><\/span>\t\t<\/div>\n\t<\/label>\n<\/div><div class=\"jet-checkboxes-list__row jet-filter-row\">\n\t\t<label class=\"jet-checkboxes-list__item\" >\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\tclass=\"jet-checkboxes-list__input\"\n\t\t\tname=\"product_cat\"\n\t\t\tvalue=\"91\"\n\t\t\tdata-label=\"P\u00e2ques\"\n\t\t\taria-label=\"P\u00e2ques\"\n\t\t\t\t\t>\n\t\t<div class=\"jet-checkboxes-list__button\">\n\t\t\t\t\t\t\t<span class=\"jet-checkboxes-list__decorator\">\n\t\t\t\t\t<i class=\"jet-checkboxes-list__checked-icon\"><svg width=\"28\" height=\"28\" viewBox=\"0 0 28 28\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t<path d=\"M26.109 8.844c0 0.391-0.156 0.781-0.438 1.062l-13.438 13.438c-0.281 0.281-0.672 0.438-1.062 0.438s-0.781-0.156-1.062-0.438l-7.781-7.781c-0.281-0.281-0.438-0.672-0.438-1.062s0.156-0.781 0.438-1.062l2.125-2.125c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l4.594 4.609 10.25-10.266c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l2.125 2.125c0.281 0.281 0.438 0.672 0.438 1.062z\"><\/path>\n<\/svg>\n<\/i>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"jet-checkboxes-list__label\">P\u00e2ques<\/span>\n\t\t\t<span class=\"jet-filters-counter\"><span class=\"counter-prefix\">(<\/span><span class=\"value\">0<\/span><span class=\"counter-suffix\">)<\/span><\/span>\t\t<\/div>\n\t<\/label>\n<\/div><\/div><\/fieldset><\/div>\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<div class=\"elementor-element elementor-element-3734270 elementor-widget elementor-widget-html\" data-id=\"3734270\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<script>\njQuery(document).ready(function($) {\n    \/\/ Show .filter_div and hide .show_filter button\n    $('.show_filter').on('click', function() {\n        $('.filter_div').show();\n        $(this).hide(); \/\/ hide the button itself\n    });\n\n    \/\/ Hide .filter_div and show .show_filter button\n    $('.close_filter_div').on('click', function() {\n        $('.filter_div').hide();\n        $('.show_filter').show(); \/\/ show the button again\n    });\n});\n\n\n\njQuery(document).ready(function($) {\n    $('.label_1').on('click', function() {\n        $('.filter_1').slideToggle(); \/\/ Accordion effect\n    });\n});\n\n\njQuery(document).ready(function($) {\n    $('.label_2').on('click', function() {\n        $('.filter_2').slideToggle(); \/\/ Accordion effect\n    });\n});\n\njQuery(document).ready(function($) {\n    $('.label_3').on('click', function() {\n        $('.filter_3').slideToggle(); \/\/ Accordion effect\n    });\n});\n\njQuery(document).ready(function($) {\n    $('.label_4').on('click', function() {\n        $('.filter_4').slideToggle(); \/\/ Accordion effect\n    });\n});\n\njQuery(document).ready(function($) {\n    $('.label_5').on('click', function() {\n        $('.filter_5').slideToggle(); \/\/ Accordion effect\n    });\n});\n\njQuery(document).ready(function($) {\n    $('.label_6').on('click', function() {\n        $('.filter_6').slideToggle(); \/\/ Accordion effect\n    });\n});\n\n\njQuery(document).ready(function($) {\n    $('.label_7').on('click', function() {\n        $('.filter_7').slideToggle(); \/\/ Accordion effect\n    });\n});\n\njQuery(document).ready(function($) {\n    $('.label_8').on('click', function() {\n        $('.filter_8').slideToggle(); \/\/ Accordion effect\n    });\n});\n\njQuery(document).ready(function($) {\n    $('.label_9').on('click', function() {\n        $('.filter_9').slideToggle(); \/\/ Accordion effect\n    });\n});\n\njQuery(document).ready(function($) {\n    $('.label_10').on('click', function() {\n        $('.filter_10').slideToggle(); \/\/ Accordion effect\n    });\n});\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/main>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Filtrer par Effacer tout Disponibilit\u00e9 Disponibilit\u00e9 En stock (0) Non disponible (0) type de produit type de produit Accessoires (0) Caf\u00e9 (0) Caf\u00e9 de sp\u00e9cialit\u00e9 (0) Caf\u00e9 grand public (0) Chocolat (0) Coffrets (0) Non class\u00e9 (0) Offres du moment (0) Trier par : PertinenceMeilleures ventesNom, A \u00e0 ZNom, Z \u00e0 APrix, croissantPrix, d\u00e9croissant Filter [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-15080","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Commande rapide - GDS<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/graindesail.com\/fr\/commande-rapide\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Commande rapide - GDS\" \/>\n<meta property=\"og:description\" content=\"Filtrer par Effacer tout Disponibilit\u00e9 Disponibilit\u00e9 En stock (0) Non disponible (0) type de produit type de produit Accessoires (0) Caf\u00e9 (0) Caf\u00e9 de sp\u00e9cialit\u00e9 (0) Caf\u00e9 grand public (0) Chocolat (0) Coffrets (0) Non class\u00e9 (0) Offres du moment (0) Trier par : PertinenceMeilleures ventesNom, A \u00e0 ZNom, Z \u00e0 APrix, croissantPrix, d\u00e9croissant Filter [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/graindesail.com\/fr\/commande-rapide\/\" \/>\n<meta property=\"og:site_name\" content=\"GDS\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-31T00:47:06+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/graindesail.com\/fr\/commande-rapide\/\",\"url\":\"https:\/\/graindesail.com\/fr\/commande-rapide\/\",\"name\":\"Commande rapide - GDS\",\"isPartOf\":{\"@id\":\"https:\/\/graindesail.com\/fr\/#website\"},\"datePublished\":\"2025-08-29T19:19:51+00:00\",\"dateModified\":\"2025-08-31T00:47:06+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/graindesail.com\/fr\/commande-rapide\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/graindesail.com\/fr\/commande-rapide\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/graindesail.com\/fr\/commande-rapide\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/graindesail.com\/fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Commande rapide\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/graindesail.com\/fr\/#website\",\"url\":\"https:\/\/graindesail.com\/fr\/\",\"name\":\"GDS\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/graindesail.com\/fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/graindesail.com\/fr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/graindesail.com\/fr\/#organization\",\"name\":\"GDS\",\"url\":\"https:\/\/graindesail.com\/fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/graindesail.com\/fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/graindesail.com\/wp-content\/uploads\/2024\/12\/logo.svg\",\"contentUrl\":\"https:\/\/graindesail.com\/wp-content\/uploads\/2024\/12\/logo.svg\",\"width\":82,\"height\":130,\"caption\":\"GDS\"},\"image\":{\"@id\":\"https:\/\/graindesail.com\/fr\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Commande rapide - GDS","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/graindesail.com\/fr\/commande-rapide\/","og_locale":"fr_FR","og_type":"article","og_title":"Commande rapide - GDS","og_description":"Filtrer par Effacer tout Disponibilit\u00e9 Disponibilit\u00e9 En stock (0) Non disponible (0) type de produit type de produit Accessoires (0) Caf\u00e9 (0) Caf\u00e9 de sp\u00e9cialit\u00e9 (0) Caf\u00e9 grand public (0) Chocolat (0) Coffrets (0) Non class\u00e9 (0) Offres du moment (0) Trier par : PertinenceMeilleures ventesNom, A \u00e0 ZNom, Z \u00e0 APrix, croissantPrix, d\u00e9croissant Filter [&hellip;]","og_url":"https:\/\/graindesail.com\/fr\/commande-rapide\/","og_site_name":"GDS","article_modified_time":"2025-08-31T00:47:06+00:00","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/graindesail.com\/fr\/commande-rapide\/","url":"https:\/\/graindesail.com\/fr\/commande-rapide\/","name":"Commande rapide - GDS","isPartOf":{"@id":"https:\/\/graindesail.com\/fr\/#website"},"datePublished":"2025-08-29T19:19:51+00:00","dateModified":"2025-08-31T00:47:06+00:00","breadcrumb":{"@id":"https:\/\/graindesail.com\/fr\/commande-rapide\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/graindesail.com\/fr\/commande-rapide\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/graindesail.com\/fr\/commande-rapide\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/graindesail.com\/fr\/"},{"@type":"ListItem","position":2,"name":"Commande rapide"}]},{"@type":"WebSite","@id":"https:\/\/graindesail.com\/fr\/#website","url":"https:\/\/graindesail.com\/fr\/","name":"GDS","description":"","publisher":{"@id":"https:\/\/graindesail.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/graindesail.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/graindesail.com\/fr\/#organization","name":"GDS","url":"https:\/\/graindesail.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/graindesail.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/graindesail.com\/wp-content\/uploads\/2024\/12\/logo.svg","contentUrl":"https:\/\/graindesail.com\/wp-content\/uploads\/2024\/12\/logo.svg","width":82,"height":130,"caption":"GDS"},"image":{"@id":"https:\/\/graindesail.com\/fr\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/graindesail.com\/fr\/wp-json\/wp\/v2\/pages\/15080","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/graindesail.com\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/graindesail.com\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/graindesail.com\/fr\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/graindesail.com\/fr\/wp-json\/wp\/v2\/comments?post=15080"}],"version-history":[{"count":0,"href":"https:\/\/graindesail.com\/fr\/wp-json\/wp\/v2\/pages\/15080\/revisions"}],"wp:attachment":[{"href":"https:\/\/graindesail.com\/fr\/wp-json\/wp\/v2\/media?parent=15080"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}