{"title":"NOUVEAUTÉS","description":"","products":[{"product_id":"cafelimo-cerise","title":"Cafelimo Cherry","description":"\u003cp\u003e\u003cstrong\u003eSparkling caffeinated cherry lemonade!\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003eA fizzy drink made with our cold brew coffee, homemade lemonade and a touch of cherry for depth and sunshine. It's juicy, vibrant, slightly bitter, and just sweet enough — basically, it tastes like summer.\u003c\/p\u003e\n\u003cp\u003eIngredients: sparkling filtered water, Zab cold brew coffee, cane sugar*, lemon juice, orange juice, salt, citric acid, tartaric acid, natural extracts *Organic ingredients\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e34 mg of caffeine per can (≈ 1\/5 of a drip coffee or 1\/3 of a double espresso)\u003cbr\u003e\u003cbr\u003e\u003c\/li\u003e\n\u003cli\u003eShelf stable\u003cbr\u003e\u003cbr\u003e\u003c\/li\u003e\n\u003cli\u003eBest served ice cold (with a little ice — wow)\u003cbr\u003e\u003cbr\u003e\u003c\/li\u003e\n\u003cli\u003eThe $0.10 deposit is not included in the price and will be added at checkout\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eWhat is it?\u003c\/strong\u003e A bright, fruity thirst-quencher, perfect for hot days or extending happy hour — with a floral cherry finish that changes everything.\u003c\/p\u003e","brand":"ZAB","offers":[{"title":"Paquet de 4 canettes","offer_id":52576393822517,"sku":"CAF-LIM-CERI-4PAC","price":18.5,"currency_code":"CAD","in_stock":true},{"title":"Paquet de 12 canettes","offer_id":52576393855285,"sku":"CAF-LIM-CERI-12","price":53.75,"currency_code":"CAD","in_stock":true},{"title":"Caisse de 24 canettes","offer_id":52576393888053,"sku":"CAF-LIM-CERI-24","price":105.0,"currency_code":"CAD","in_stock":true},{"title":"10 caisses + 1 gratuite!","offer_id":52576393920821,"sku":"CAF-LIM-CERI-CAIS-FRE","price":1050.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/2716\/1842\/files\/cafelimo-cherry-single.jpg?v=1776357881"},{"product_id":"cafelimo-4pack-mixte","title":"Cafelimo 4pack mix","description":"\u003cp\u003e\u003cstrong\u003eCAFÉLIMO 4PACK MIX!\u003c\/strong\u003e Can't pick a flavour? We've got you covered!\u003c\/p\u003e\n\u003cp\u003eA discovery pack made with our cold brew coffee, homemade lemonade and four fruity twists to explore the whole lineup. It's bright, fizzy, slightly bitter, and just sweet enough — basically, summer in four cans.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eWhat's in the box:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e🍋 \u003cstrong\u003eOriginal (lemon)\u003c\/strong\u003e — The classic. Bright, clean, and refreshing. Ingredients: sparkling filtered water, Zab cold brew coffee, cane sugar, lemon juice, orange juice, salt, citric acid, tartaric acid, natural extracts*\u003c\/li\u003e\n\u003cli\u003e🍊 \u003cstrong\u003eBlood orange\u003c\/strong\u003e — Richer, slightly floral, with a beautiful depth of citrus. Ingredients: sparkling filtered water, Zab cold brew coffee, cane sugar, lemon juice, orange juice, salt, citric acid, tartaric acid, blood orange extract, natural extracts*\u003c\/li\u003e\n\u003cli\u003e🫚 \u003cstrong\u003eGinger\u003c\/strong\u003e — Spicy and warming, with a kick that wakes you up. Ingredients: sparkling filtered water, Zab cold brew coffee, cane sugar, lemon juice, orange juice, salt, citric acid, tartaric acid, ginger extract, natural extracts*\u003c\/li\u003e\n\u003cli\u003e🍒 \u003cstrong\u003eCherry\u003c\/strong\u003e \u003cem\u003e(new flavour omg)\u003c\/em\u003e — Juicy, vibrant, with a floral finish that changes everything. Ingredients: sparkling filtered water, Zab cold brew coffee, cane sugar, lemon juice, orange juice, sour cherry juice, salt, citric acid, tartaric acid, natural flavour, natural extracts*\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e*Organic ingredients\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e34 mg of caffeine per can (≈ 1\/5 of a drip coffee or 1\/3 of a double espresso)\u003c\/li\u003e\n\u003cli\u003eShelf stable\u003c\/li\u003e\n\u003cli\u003eBest served ice cold (with a little ice — wow)\u003c\/li\u003e\n\u003cli\u003eThe $0.10 deposit per can is not included in the price and will be added at checkout\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eWhat is it really?\u003c\/strong\u003e The best way to find your favourite flavour — or to not have to choose.\u003c\/p\u003e","brand":"ZAB","offers":[{"title":"4 canettes (1x 4pack mixte)","offer_id":52576491274549,"sku":"CAF-LIM-PACK-4-MIX","price":18.5,"currency_code":"CAD","in_stock":true},{"title":"12 canettes (3x 4pack mixte)","offer_id":52576491307317,"sku":"CAF-LIM-PACK-12-MIX","price":53.75,"currency_code":"CAD","in_stock":true},{"title":"24 canettes (6x 4pack mixte)","offer_id":52576491340085,"sku":"CAF-LIM-PACK-24-MIX","price":105.0,"currency_code":"CAD","in_stock":true},{"title":"10 caisses + 1 gratuite! (66 x 4pack mixte)","offer_id":52576491372853,"sku":"CAF-LIM-PACK-FREE-MIX","price":1050.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/2716\/1842\/files\/4pack-mix1.jpg?v=1777396340"},{"product_id":"tshirt-x","title":"T SHIRT - X","description":"\u003cp class=\"font-claude-response-body break-words whitespace-pre-wrap leading-[1.7]\"\u003e\u003cstrong\u003eNATURAL AWAKENING SPECIALISTS SINCE 2016!\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp class=\"font-claude-response-body break-words whitespace-pre-wrap leading-[1.7]\"\u003eClassic ZAB, always dropping merch! Yeah yeah, we knowww. But ZAB is turning 10 this year, so we had to mark the occasion with a tee, what do you want…\u003c\/p\u003e\n\u003cul class=\"[li_\u0026amp;]:mb-0 [li_\u0026amp;]:mt-1 [li_\u0026amp;]:gap-1 [\u0026amp;:not(:last-child)_ul]:pb-1 [\u0026amp;:not(:last-child)_ol]:pb-1 list-disc flex flex-col gap-1 pl-8 mb-3\"\u003e\n\u003cli class=\"whitespace-normal break-words pl-2\"\u003eHeavyweight cotton\u003c\/li\u003e\n\u003cli class=\"whitespace-normal break-words pl-2\"\u003eGraphite color\u003c\/li\u003e\n\u003cli class=\"whitespace-normal break-words pl-2\"\u003e10th anniversary illustration on the back and logo on the front, in beige\u003c\/li\u003e\n\u003cli class=\"whitespace-normal break-words pl-2\"\u003eRelaxed fit\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\"\u003e\u003cstrong\u003eA tee built to last until our 20th!\u003c\/strong\u003e\u003c\/p\u003e","brand":"ZAB","offers":[{"title":"S","offer_id":52775943602485,"sku":"MER-TSH-X-S","price":45.0,"currency_code":"CAD","in_stock":true},{"title":"M","offer_id":52775943635253,"sku":"MER-TSH-X-M","price":45.0,"currency_code":"CAD","in_stock":true},{"title":"L","offer_id":52775943668021,"sku":"MER-TSH-X-L","price":45.0,"currency_code":"CAD","in_stock":true},{"title":"XL","offer_id":52775943700789,"sku":"MER-TSH-X-XL","price":45.0,"currency_code":"CAD","in_stock":true},{"title":"XXL","offer_id":52775943733557,"sku":"MER-TSH-X-XXL","price":45.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/2716\/1842\/files\/t-shirt-X-ans-back-tucked.jpg?v=1777575244"},{"product_id":"totebag-zab-gang","title":"ZAB GANG - TOTEBAG","description":"\u003cp class=\"font-claude-response-body break-words whitespace-pre-wrap leading-[1.7]\"\u003e\u003cstrong\u003eTOOT TOOT YOUR ZUBER HAS ARRIVED! \u003c\/strong\u003e\u003c\/p\u003e\n\u003cp class=\"font-claude-response-body break-words whitespace-pre-wrap leading-[1.7]\"\u003eOur most iconic figures from the last 10 years are hitting the road and causing chaos!\u003c\/p\u003e\n\u003cp class=\"font-claude-response-body break-words whitespace-pre-wrap leading-[1.7]\"\u003eDark grey tote bag with a 100% nostalgic illustration on one side and the ZAB logo on the other.\u003c\/p\u003e\n\u003cul class=\"[li_\u0026amp;]:mb-0 [li_\u0026amp;]:mt-1 [li_\u0026amp;]:gap-1 [\u0026amp;:not(:last-child)_ul]:pb-1 [\u0026amp;:not(:last-child)_ol]:pb-1 list-disc flex flex-col gap-1 pl-8 mb-3\"\u003e\n\u003cli class=\"whitespace-normal break-words pl-2\"\u003eInterior pocket\u003cbr\u003e\u003cbr\u003e\u003c\/li\u003e\n\u003cli class=\"whitespace-normal break-words pl-2\"\u003eInterior key hook\u003cbr\u003e\u003cbr\u003e\u003c\/li\u003e\n\u003cli class=\"whitespace-normal break-words pl-2\"\u003eOne adjustable strap\u003cbr\u003e\u003cbr\u003e\u003c\/li\u003e\n\u003cli class=\"whitespace-normal break-words pl-2\"\u003eFlat bottom\u003cbr\u003e\u003cbr\u003e\u003c\/li\u003e\n\u003cli class=\"whitespace-normal break-words pl-2\"\u003e24L capacity\u003cbr\u003e\u003cbr\u003e\u003c\/li\u003e\n\u003cli class=\"whitespace-normal break-words pl-2\"\u003eDimensions: width 45cm, height 36cm, depth 15cm\u003cbr\u003e\u003cbr\u003e\u003c\/li\u003e\n\u003cli class=\"whitespace-normal break-words pl-2\"\u003e16 oz canvas — 90% polyester \/ 10% cotton\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\"\u003eThe ideal tote for hitting the park, the market, or catching a ride with your best friends!\u003c\/p\u003e","brand":"ZAB","offers":[{"title":"Default Title","offer_id":52776018968885,"sku":"MER-ACC-TOTE-GANG-ZAB","price":25.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/2716\/1842\/files\/tote-10ans-front-closeup-lifestyle.jpg?v=1777916307"},{"product_id":"flair-mousseur-a-lait-wizard","title":"Flair - Wizard Milk steamer","description":"\u003cp\u003eFlair Wizard – Stovetop Milk Frother\u003c\/p\u003e\n\u003cp\u003eBring the magic of microfoam wherever you go. Flair's Wizard produces powerful, dry steam to texture your milk to perfection - cappuccinos, lattes, cortados - just like a café, from your stovetop or camping stove.\u003c\/p\u003e\n\u003cp\u003eKey features\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e180° cold-touch pivoting steam wand - Safe positioning with no risk of burns\u003cbr\u003e\u003cbr\u003e\u003c\/li\u003e\n\u003cli\u003eBuilt-in pressure gauge with steam range - Precise pressure control for consistent results\u003cbr\u003e\u003cbr\u003e\u003c\/li\u003e\n\u003cli\u003eAutomatic pressure relief valve - Safely releases excess pressure\u003cbr\u003e\u003cbr\u003e\u003c\/li\u003e\n\u003cli\u003e2 interchangeable tips - 1-hole and 3-hole\u003cbr\u003e\u003cbr\u003e\u003c\/li\u003e\n\u003cli\u003e700 ml reservoir\u003cbr\u003e\u003cbr\u003e\u003c\/li\u003e\n\u003cli\u003eCompatible with most cooktops - Gas, ceramic, induction, and coil\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Flair","offers":[{"title":"Default Title","offer_id":52776159772981,"sku":"GEA-FLA-STEA-WIZA","price":275.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/2716\/1842\/files\/flair-wizard-steamer1.jpg?v=1779371400"},{"product_id":"pulverisateur-en-verre","title":"Glass Mist Spray Bottle ","description":"\u003cp\u003eGlass Spray Bottle – 2 oz\u003c\/p\u003e\n\u003cp\u003eOne simple step for a cleaner grind. Spritz a few drops of water on your beans before grinding to eliminate static in your grinder - no more grounds sticking to the walls and no more wasted coffee.\u003c\/p\u003e\n\u003cp\u003eKey features\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e2 oz (60 ml) capacity\u003c\/li\u003e\n\u003cli\u003eGlass body - Neutral material that transfers no taste or odor to the water\u003c\/li\u003e\n\u003cli\u003eFine, precise mist - Evenly moistens beans without soaking them\u003c\/li\u003e\n\u003cli\u003eAvailable in clear or amber glass\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"ULINE","offers":[{"title":"Ambré","offer_id":52776288878901,"sku":"GEA-ULI-SPRA-2OZ-AMB","price":5.0,"currency_code":"CAD","in_stock":true},{"title":"Transparent","offer_id":52776291107125,"sku":"GEA-ULI-SPRA-2OZ-VER","price":5.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/2716\/1842\/files\/atomisateur2.jpg?v=1779371496"},{"product_id":"ethiopie-tariku","title":"ETHIOPIA - TARIKU","description":"\u003c!-- =========================================================\n  SECTION 1 : TASTING NOTES\n========================================================= --\u003e\n\u003cdiv style=\"width: 100%; margin: 0 auto 12px auto; border: 2px solid #000; border-radius: 12px; overflow: hidden;\"\u003e\n\u003cdiv style=\"padding: 10px 14px; font-weight: 800; text-transform: uppercase; font-size: 14px; letter-spacing: .02em; background: #000; color: #fff; text-align: center;\"\u003eTasting Notes\u003c\/div\u003e\n\u003cdiv style=\"padding: 16px 14px; font-weight: 900; text-transform: uppercase; font-size: 28px; letter-spacing: .05em; text-align: center; background: transparent;\"\u003eBLUEBERRY + CHERRY + DARK CHOCOLATE\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- ========= END SECTION 1 ========= --\u003e\n\n\u003c!-- =========================================================\n  SECTION 2 : SOURCING\n========================================================= --\u003e\n\u003cdiv style=\"width: 100%; margin: 0 auto 12px auto;\"\u003e\n\u003cdiv style=\"padding: 12px 14px; font-weight: 800; text-transform: uppercase; font-size: 14px; letter-spacing: .02em; background: #000; color: #fff; text-align: center; border-radius: 12px 12px 0 0;\"\u003eSourcing\u003c\/div\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; background: transparent;\" cellspacing=\"1\" cellpadding=\"1\" border=\"3\"\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd style=\"width: 20%;\"\u003eORIGIN\u003c\/td\u003e\n\u003ctd\u003eOromia Region, West Arsi Zone, Nensebo District, Ethiopia\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ePRODUCERS\u003c\/td\u003e\n\u003ctd\u003e593 smallholder producers\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eLOT MANAGER\u003c\/td\u003e\n\u003ctd\u003eTariku Kare\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eWASHING STATION\u003c\/td\u003e\n\u003ctd\u003eRafisa\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eVARIETY\u003c\/td\u003e\n\u003ctd\u003e74158, 74110, 74112\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ePROCESS\u003c\/td\u003e\n\u003ctd\u003eNatural\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eALTITUDE\u003c\/td\u003e\n\u003ctd\u003e2000–2200 masl\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ePARTNERS\u003c\/td\u003e\n\u003ctd\u003eCrop to Cup\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eVOLUME PURCHASED\u003c\/td\u003e\n\u003ctd\u003e5,400 kg\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eFOB\u003c\/td\u003e\n\u003ctd\u003e$4.35 USD\/lb\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eLANDED PRICE\u003c\/td\u003e\n\u003ctd\u003e$9.16 CAD\/lb\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eRELATIONSHIP\u003c\/td\u003e\n\u003ctd\u003e1 year\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e\n\u003c!-- ========= END SECTION 2 ========= --\u003e\n\u003cp\u003e\u0026nbsp;\u003c\/p\u003e\n\u003c!-- =========================================================\n  SECTION 3 : COFFEE INFORMATION\n========================================================= --\u003e\n\u003cdiv style=\"width: 100%; margin: 0 auto 12px auto;\"\u003e\n\u003cdiv style=\"padding: 12px 14px; font-weight: 800; text-transform: uppercase; font-size: 14px; letter-spacing: .02em; background: #000; color: #fff; text-align: center; border-radius: 12px 12px 0 0;\"\u003eCoffee Information\u003c\/div\u003e\n\u003cdiv style=\"border: 2px solid #000; border-top: none; border-radius: 0 0 12px 12px; padding: 16px 14px; background: transparent;\"\u003e\n\u003cp style=\"margin: 0 0 12px 0;\"\u003eThis Ethiopian natural opens with a burst of wild blueberry and dark cherry. The fruitiness is grounded by layers of dark chocolate and an enveloping sweetness, with a silky texture and a long, lingering finish.\u003c\/p\u003e\n\u003cp style=\"margin: 0 0 12px 0;\"\u003eIn the heart of Nensebo, the Rafisa washing station works with nearly 600 small producers from the villages of Refisa, Roricho, Bulga, and Riripa. Located in the Oromia region, about 400 km south of Addis Ababa, this young coffee-growing area reaches elevations up to 2200 masl and is home to a mix of local and wild coffee varieties.\u003c\/p\u003e\n\u003cp style=\"margin: 0;\"\u003eBehind Rafisa is Tariku Kare. Born in Bombe, he began working in coffee at just 15 years old before managing several washing stations across the region. After years in the industry, he eventually opened his own station to export his coffees internationally. Today, Tariku is known for paying higher prices for ripe coffee cherries and for building long-term relationships with the producers who deliver to his washing stations.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- ========= END SECTION 3 ========= --\u003e\n\u003cp\u003e\u0026nbsp;\u003c\/p\u003e\n\u003c!-- =========================================================\n  SECTION 4 : EXTRACTION PARAMETERS — ESPRESSO\n========================================================= --\u003e\n\u003cdiv style=\"width: 100%; margin: 0 auto;\"\u003e\n\u003cdetails style=\"border: 2px solid #000; border-radius: 12px; overflow: hidden; margin: 0 0 12px 0; background: rgba(255,255,255,0.5);\" open=\"\"\u003e\n\u003csummary style=\"cursor: pointer; list-style: none; padding: 12px 14px; font-weight: 800; text-transform: uppercase; font-size: 14px; letter-spacing: .02em; background: #000; color: #fff; text-align: center;\"\u003eEspresso — Recommended Parameters\u003c\/summary\u003e\n\u003cdiv style=\"padding: 12px 14px;\"\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; background: transparent;\"\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd style=\"padding: 10px 0; font-weight: 800; border-bottom: 1px solid rgba(0,0,0,.2);\"\u003eGround coffee\u003c\/td\u003e\n\u003ctd style=\"padding: 10px 0; text-align: right; border-bottom: 1px solid rgba(0,0,0,.2);\"\u003e18.5 g\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"padding: 10px 0; font-weight: 800; border-bottom: 1px solid rgba(0,0,0,.2);\"\u003eCoffee in the cup\u003c\/td\u003e\n\u003ctd style=\"padding: 10px 0; text-align: right; border-bottom: 1px solid rgba(0,0,0,.2);\"\u003e34 g\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"padding: 10px 0; font-weight: 800;\"\u003eExtraction time\u003c\/td\u003e\n\u003ctd style=\"padding: 10px 0; text-align: right;\"\u003e32 sec\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003cdiv style=\"margin-top: 10px; padding: 8px 10px; border-radius: 8px; background: rgba(0,0,0,.04); border: 1px dashed rgba(0,0,0,.2); font-size: 12px; opacity: .7; line-height: 1.4;\"\u003e\u003cstrong\u003eNote —\u003c\/strong\u003e Recipe optimized for an \u003cstrong\u003e18 g\u003c\/strong\u003e basket. Please consult your machine's manual to confirm your basket size.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/details\u003e\n\u003c\/div\u003e\n\u003c!-- ========= END SECTION 4 ========= --\u003e\n\u003cp\u003e\u0026nbsp;\u003c\/p\u003e\n\u003c!-- =========================================================\n  SECTION 5 : V60\n========================================================= --\u003e\n\u003cdiv style=\"width: 100%; margin: 0 auto;\"\u003e\n\u003cdetails style=\"border: 2px solid #000; border-radius: 12px; overflow: hidden; margin: 0 0 12px 0; background: rgba(255,255,255,0.5);\" open=\"\" id=\"v60Details-rafisa\"\u003e\n\u003csummary style=\"cursor: pointer; list-style: none; padding: 12px 14px; font-weight: 800; text-transform: uppercase; font-size: 14px; letter-spacing: .02em; background: #000; color: #fff; text-align: center;\"\u003eV60 – Recipe\u003c\/summary\u003e\n\u003cdiv style=\"padding: 12px 14px;\"\u003e\n\u003cdiv style=\"padding: 10px 0 10px; border-bottom: 1px solid rgba(0,0,0,.2);\"\u003e\n\u003cdiv style=\"font-weight: 900; font-size: 16px;\"\u003eRatio 1:15\u003c\/div\u003e\n\u003cdiv style=\"margin-top: 4px; opacity: .7; font-size: 13px;\"\u003e15 g in – 225 g out\u003c\/div\u003e\n\u003cdiv style=\"margin-top: 6px; font-size: 13px;\"\u003e\u003cstrong\u003eWater temperature:\u003c\/strong\u003e 93 °C\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv style=\"display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; padding: 10px 0 8px;\"\u003e\n\u003cdiv style=\"display: flex; gap: 8px; align-items: center; flex-wrap: wrap;\"\u003e\u003cbutton id=\"v60StartBtn-rafisa\" type=\"button\" style=\"cursor: pointer; border: 2px solid #000; background: #000; color: #fff; font-weight: 900; padding: 8px 10px; border-radius: 10px; text-transform: uppercase; letter-spacing: .02em; font-size: 12px;\"\u003eStart\u003c\/button\u003e \u003cbutton id=\"v60StopBtn-rafisa\" type=\"button\" disabled=\"disabled\" style=\"cursor: pointer; border: 2px solid #000; background: #fff; color: #000; font-weight: 900; padding: 8px 10px; border-radius: 10px; text-transform: uppercase; letter-spacing: .02em; font-size: 12px; opacity: .5;\"\u003eStop\u003c\/button\u003e\u003c\/div\u003e\n\u003cdiv style=\"display: flex; gap: 10px; align-items: baseline; line-height: 1;\"\u003e\u003cspan style=\"opacity: .70; font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: .04em;\"\u003eTimer\u003c\/span\u003e \u003cspan id=\"v60Timer-rafisa\" style=\"font-weight: 950; font-size: 28px; letter-spacing: .01em;\"\u003e0:00\u003c\/span\u003e\u003c\/div\u003e\n\u003cdiv id=\"v60WakeStatus-rafisa\" style=\"flex-basis: 100%; opacity: .6; font-size: 12px; line-height: 1.3; margin-top: 2px;\"\u003eℹ️ Press \"Start\" to keep your screen on.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv style=\"margin-top: 8px; display: grid; gap: 10px;\"\u003e\n\u003cdiv id=\"v60-card-1-rafisa\" style=\"border: 1px solid rgba(0,0,0,.18); border-radius: 12px; padding: 10px 12px;\"\u003e\n\u003cdiv style=\"display: flex; gap: 10px; align-items: baseline; margin-bottom: 6px;\"\u003e\n\u003cdiv style=\"font-weight: 900;\"\u003e0:00\u003c\/div\u003e\n\u003cdiv style=\"font-weight: 900;\"\u003ePhase 1 — Bloom\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv style=\"display: flex; gap: 8px; flex-wrap: wrap; font-size: 12.5px; font-weight: 800;\"\u003e\u003cspan id=\"v60-pill-1-rafisa\" style=\"padding: 5px 9px; border-radius: 999px; background: rgba(0,0,0,.05); border: 1px solid rgba(0,0,0,.12);\"\u003ePour for 0:10s\u003c\/span\u003e \u003cspan style=\"padding: 5px 9px; border-radius: 999px; background: rgba(0,0,0,.05); border: 1px solid rgba(0,0,0,.12);\"\u003eTotal 40 g\u003c\/span\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv id=\"v60-card-2-rafisa\" style=\"border: 1px solid rgba(0,0,0,.18); border-radius: 12px; padding: 10px 12px;\"\u003e\n\u003cdiv style=\"display: flex; gap: 10px; align-items: baseline; margin-bottom: 6px;\"\u003e\n\u003cdiv style=\"font-weight: 900;\"\u003e0:40\u003c\/div\u003e\n\u003cdiv style=\"font-weight: 900;\"\u003ePhase 2\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv style=\"display: flex; gap: 8px; flex-wrap: wrap; font-size: 12.5px; font-weight: 800;\"\u003e\u003cspan id=\"v60-pill-2-rafisa\" style=\"padding: 5px 9px; border-radius: 999px; background: rgba(0,0,0,.05); border: 1px solid rgba(0,0,0,.12);\"\u003ePour for 0:30s\u003c\/span\u003e \u003cspan style=\"padding: 5px 9px; border-radius: 999px; background: rgba(0,0,0,.05); border: 1px solid rgba(0,0,0,.12);\"\u003eTotal 160 g\u003c\/span\u003e \u003cspan style=\"padding: 5px 9px; border-radius: 999px; background: rgba(0,0,0,.05); border: 1px solid rgba(0,0,0,.12); opacity: .6;\"\u003e+120 g\u003c\/span\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv id=\"v60-card-3-rafisa\" style=\"border: 1px solid rgba(0,0,0,.18); border-radius: 12px; padding: 10px 12px;\"\u003e\n\u003cdiv style=\"display: flex; gap: 10px; align-items: baseline; margin-bottom: 6px;\"\u003e\n\u003cdiv style=\"font-weight: 900;\"\u003e1:20\u003c\/div\u003e\n\u003cdiv style=\"font-weight: 900;\"\u003ePhase 3\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv style=\"display: flex; gap: 8px; flex-wrap: wrap; font-size: 12.5px; font-weight: 800;\"\u003e\u003cspan id=\"v60-pill-3-rafisa\" style=\"padding: 5px 9px; border-radius: 999px; background: rgba(0,0,0,.05); border: 1px solid rgba(0,0,0,.12);\"\u003ePour for 0:20s\u003c\/span\u003e \u003cspan style=\"padding: 5px 9px; border-radius: 999px; background: rgba(0,0,0,.05); border: 1px solid rgba(0,0,0,.12);\"\u003eTotal 225 g\u003c\/span\u003e \u003cspan style=\"padding: 5px 9px; border-radius: 999px; background: rgba(0,0,0,.05); border: 1px solid rgba(0,0,0,.12); opacity: .6;\"\u003e+65 g\u003c\/span\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv style=\"margin-top: 12px; border-top: 1px solid rgba(0,0,0,.2); padding-top: 10px;\"\u003e\n\u003cdiv style=\"display: flex; gap: 10px; align-items: baseline;\"\u003e\n\u003cdiv style=\"font-weight: 900;\"\u003e2:45\u003c\/div\u003e\n\u003cdiv style=\"font-weight: 900;\"\u003eTotal draw-down time\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv style=\"margin-top: 8px; padding: 8px 10px; border-radius: 8px; background: rgba(0,0,0,.04); border: 1px dashed rgba(0,0,0,.2); font-size: 12px; opacity: .6; line-height: 1.4;\"\u003e\u003cstrong\u003eℹ️ Tip —\u003c\/strong\u003e If the total time is shorter, your grind is likely too coarse. If it's longer, your grind is likely too fine.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/details\u003e\n\u003c\/div\u003e\n\u003c!-- ========= END SECTION 5 ========= --\u003e\u003csvg style=\"display: none;\"\u003e\n\u003cstyle\u003e\n  @keyframes v60PulsePhase {\n    0%   { transform: scale(1);    box-shadow: 0 0 0 0 rgba(200,169,126,.35); }\n    50%  { transform: scale(1.06); box-shadow: 0 0 0 10px rgba(200,169,126,0); }\n    100% { transform: scale(1);    box-shadow: 0 0 0 0 rgba(200,169,126,0); }\n  }\n  .v60-pulse {\n    animation: v60PulsePhase 700ms ease-out 1;\n    transform-origin: center;\n    will-change: transform;\n  }\n  @keyframes v60BlinkPill {\n    0%, 100% { opacity: 1; transform: scale(1); }\n    50%      { opacity: .22; transform: scale(1.03); }\n  }\n  .v60-pill-pour-active {\n    background: #ffe7b7 !important;\n    border: 2px solid #d2a44a !important;\n    color: #3b2a12 !important;\n    font-weight: 900 !important;\n    letter-spacing: .02em;\n    animation: v60BlinkPill 2500ms ease-in-out infinite;\n    box-shadow:\n      0 0 0 2px rgba(210,164,74,.18) inset,\n      0 10px 22px rgba(0,0,0,.12),\n      0 0 0 6px rgba(210,164,74,.10);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .v60-pill-pour-active { animation: none; }\n    .v60-pulse { animation: none; }\n  }\n\u003c\/style\u003e\n\u003cscript\u003e\n(function() {\n  var SUFFIX = '-rafisa';\n  var END_AT = 165;\n  var phases = [\n    { key: 1, t: 0,  pourLen: 10 },\n    { key: 2, t: 40, pourLen: 30 },\n    { key: 3, t: 80, pourLen: 20 }\n  ];\n  var latte = {\n    cardBg:     '#f6f1ea',\n    cardBorder: '#c8a97e',\n    pillBg:     '#eadfce'\n  };\n  var details  = document.getElementById('v60Details'    + SUFFIX);\n  var startBtn = document.getElementById('v60StartBtn'   + SUFFIX);\n  var stopBtn  = document.getElementById('v60StopBtn'    + SUFFIX);\n  var timerEl  = document.getElementById('v60Timer'      + SUFFIX);\n  var statusEl = document.getElementById('v60WakeStatus' + SUFFIX);\n  var pills = {\n    1: document.getElementById('v60-pill-1' + SUFFIX),\n    2: document.getElementById('v60-pill-2' + SUFFIX),\n    3: document.getElementById('v60-pill-3' + SUFFIX)\n  };\n  var cards = {\n    1: document.getElementById('v60-card-1' + SUFFIX),\n    2: document.getElementById('v60-card-2' + SUFFIX),\n    3: document.getElementById('v60-card-3' + SUFFIX)\n  };\n  function setCardActive(key) {\n    Object.keys(cards).forEach(function(k) {\n      var c = cards[k];\n      if (!c) return;\n      if (parseInt(k) === key) {\n        c.style.borderColor = latte.cardBorder;\n        c.style.background  = latte.cardBg;\n        c.style.boxShadow   = '0 0 0 2px rgba(200,169,126,.25) inset, 0 8px 22px rgba(200,169,126,.28)';\n      } else {\n        c.style.borderColor = 'rgba(0,0,0,.18)';\n        c.style.background  = 'transparent';\n        c.style.boxShadow   = 'none';\n      }\n    });\n  }\n  function setPillPhaseActive(key, doPulse) {\n    Object.keys(pills).forEach(function(k) {\n      var p = pills[k];\n      if (!p) return;\n      p.style.background  = 'rgba(0,0,0,.05)';\n      p.style.borderColor = 'rgba(0,0,0,.12)';\n      p.style.boxShadow   = 'none';\n      p.classList.remove('v60-pulse');\n    });\n    var pill = pills[key];\n    if (pill) {\n      pill.style.background  = latte.pillBg;\n      pill.style.borderColor = latte.cardBorder;\n      pill.style.boxShadow   = '0 0 0 2px rgba(200,169,126,.25) inset';\n      if (doPulse) {\n        pill.classList.remove('v60-pulse');\n        void pill.offsetWidth;\n        pill.classList.add('v60-pulse');\n      }\n    }\n  }\n  function resetPourPills() {\n    Object.values(pills).forEach(function(p) {\n      if (!p) return;\n      p.classList.remove('v60-pill-pour-active');\n    });\n  }\n  function setPourPillActive(key) {\n    resetPourPills();\n    if (!key) return;\n    var pill = pills[key];\n    if (pill) pill.classList.add('v60-pill-pour-active');\n  }\n  function clearAll() {\n    Object.values(cards).forEach(function(c) {\n      if (!c) return;\n      c.style.borderColor = 'rgba(0,0,0,.18)';\n      c.style.background  = 'transparent';\n      c.style.boxShadow   = 'none';\n    });\n    Object.values(pills).forEach(function(p) {\n      if (!p) return;\n      p.style.background  = 'rgba(0,0,0,.05)';\n      p.style.borderColor = 'rgba(0,0,0,.12)';\n      p.style.boxShadow   = 'none';\n      p.classList.remove('v60-pulse');\n      p.classList.remove('v60-pill-pour-active');\n    });\n  }\n  var wakeLock  = null;\n  var startTime = null;\n  var rafId     = null;\n  var lastPhaseKey = null;\n  var lastPourKey  = null;\n  function fmt(sec) {\n    sec = Math.max(0, Math.floor(sec));\n    var m = Math.floor(sec \/ 60);\n    var s = sec % 60;\n    return m + ':' + (s \u0026lt; 10 ? '0' : '') + s;\n  }\n  function getCurrentPhaseKey(elapsed) {\n    var current = phases[0].key;\n    for (var i = 0; i \u0026lt; phases.length; i++) if (elapsed \u0026gt;= phases[i].t) current = phases[i].key;\n    return current;\n  }\n  function getPourKey(elapsed) {\n    for (var i = phases.length - 1; i \u0026gt;= 0; i--) {\n      var p = phases[i];\n      if (elapsed \u0026gt;= p.t \u0026amp;\u0026amp; elapsed \u0026lt; (p.t + p.pourLen)) return p.key;\n    }\n    return null;\n  }\n  function enableWakeLock() {\n    if (!('wakeLock' in navigator)) {\n      statusEl.textContent = '⚠️ Your browser does not support the screen wake lock feature.';\n      return Promise.resolve();\n    }\n    return navigator.wakeLock.request('screen').then(function(wl) {\n      wakeLock = wl;\n      statusEl.textContent = '✅ Screen kept on during the recipe.';\n      wakeLock.addEventListener('release', function() {\n        statusEl.textContent = 'ℹ️ Screen wake lock released.';\n      });\n    }).catch(function() {\n      statusEl.textContent = '⚠️ Unable to activate screen wake lock.';\n      wakeLock = null;\n    });\n  }\n  function disableWakeLock() {\n    if (wakeLock) { wakeLock.release(); wakeLock = null; }\n  }\n  function setButtons(running) {\n    startBtn.disabled = running;\n    stopBtn.disabled  = !running;\n    stopBtn.style.opacity = running ? '1' : '.5';\n  }\n  function tick() {\n    var elapsed = (Date.now() - startTime) \/ 1000;\n    timerEl.textContent = fmt(elapsed);\n    var phaseKey = getCurrentPhaseKey(elapsed);\n    if (phaseKey !== lastPhaseKey) {\n      setCardActive(phaseKey);\n      setPillPhaseActive(phaseKey, lastPhaseKey !== null);\n      lastPhaseKey = phaseKey;\n    }\n    var pourKey = getPourKey(elapsed);\n    if (pourKey !== lastPourKey) {\n      setPourPillActive(pourKey);\n      lastPourKey = pourKey;\n    }\n    if (elapsed \u0026gt;= END_AT) { stopRecipe(true); return; }\n    rafId = requestAnimationFrame(tick);\n  }\n  function startRecipe() {\n    setButtons(true);\n    timerEl.textContent = '0:00';\n    lastPhaseKey = null;\n    lastPourKey  = null;\n    enableWakeLock().then(function() {\n      setCardActive(1);\n      setPillPhaseActive(1, false);\n      setPourPillActive(1);\n      lastPhaseKey = 1;\n      lastPourKey  = 1;\n      startTime = Date.now();\n      if (rafId) cancelAnimationFrame(rafId);\n      rafId = requestAnimationFrame(tick);\n    });\n  }\n  function stopRecipe(autoEnded) {\n    if (rafId) cancelAnimationFrame(rafId);\n    rafId     = null;\n    startTime = null;\n    disableWakeLock();\n    setButtons(false);\n    clearAll();\n    lastPhaseKey = null;\n    lastPourKey  = null;\n    if (autoEnded) {\n      statusEl.textContent = '✅ Recipe complete — screen released.';\n      timerEl.textContent  = fmt(END_AT);\n    } else {\n      statusEl.textContent = 'ℹ️ Recipe stopped — screen released.';\n    }\n  }\n  startBtn.addEventListener('click', startRecipe);\n  stopBtn.addEventListener('click', function() { stopRecipe(false); });\n  details.addEventListener('toggle', function() { if (!details.open) stopRecipe(false); });\n  document.addEventListener('visibilitychange', function() {\n    if (document.visibilityState === 'visible' \u0026amp;\u0026amp; startTime \u0026amp;\u0026amp; !wakeLock) enableWakeLock();\n  });\n})();\n\u003c\/script\u003e\n\u003c\/svg\u003e","brand":"ZAB","offers":[{"title":"300g","offer_id":52900988911925,"sku":"CAF-SIN-TARI-300","price":30.0,"currency_code":"CAD","in_stock":true},{"title":"808g","offer_id":52900988944693,"sku":"CAF-SIN-TARI-808","price":74.0,"currency_code":"CAD","in_stock":true},{"title":"2268g (5lbs)","offer_id":52900988977461,"sku":"CAF-SIN-TARI-2268","price":195.0,"currency_code":"CAD","in_stock":true},{"title":"100g","offer_id":52900989010229,"sku":"CAF-SIN-TARI-100","price":15.5,"currency_code":"CAD","in_stock":true},{"title":"Bucket - 5lbs (Livraison locale seulement)","offer_id":52900989042997,"sku":"CAF-SIN-TARI-BUCK-5","price":147.0,"currency_code":"CAD","in_stock":true},{"title":"Bucket - 15lbs (Livraison locale seulement)","offer_id":52900989075765,"sku":"CAF-SIN-TARI-BUCK-15","price":441.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/2716\/1842\/files\/tariku-300g-new.webp?v=1780337070"},{"product_id":"fellow-espresso-series-1","title":"FELLOW ESPRESSO SERIES 1","description":"\u003cp\u003e\u003cstrong\u003eFellow Espresso Series 1\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003eThe Fellow Espresso Series 1 is a semi-professional espresso machine designed to balance performance and accessibility. Its patented Boosted Boiler™ architecture, featuring three independent heating elements, reaches brewing temperature in two minutes or less while maintaining exceptional thermal stability between shots and steaming.\u003c\/p\u003e\n\u003cp\u003eThe machine offers programmable pressure profiling, including controlled pre-infusion, to improve extraction, enhance sweetness and clarity in the cup, and forgive small inconsistencies in puck prep.\u003c\/p\u003e\n\u003cp\u003eA built-in shot analysis system detects when a shot pulls too fast or too slow and suggests grind adjustments, helping you improve your results over time without guesswork.\u003c\/p\u003e\n\u003cp\u003eThe Series 1 features on-screen guided recipes for classic espresso drinks, as well as a manual mode for users who want full control. The assisted steam wand automatically stops at your target milk temperature, purges after use, and can be customized for different milk types for consistent, café-quality results.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eTechnical specifications:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003ePump: 15-bar, calibrated for up to 9 bars of extraction\u003c\/li\u003e\n\u003cli\u003eWater tank: 2 L removable (not plumbed-in compatible)\u003c\/li\u003e\n\u003cli\u003eWarm-up time: Two minutes or less\u003c\/li\u003e\n\u003cli\u003eDimensions: 438 × 315 × 279 mm\u003c\/li\u003e\n\u003cli\u003eWeight: 21.7 lbs\u003c\/li\u003e\n\u003cli\u003eMobile app compatible with iOS and Android\u003c\/li\u003e\n\u003cli\u003ePower: 1500 W – 120V\u003c\/li\u003e\n\u003cli\u003e⚠️ Important: This product is designed for Type A\/B outlets only. Please verify that your local electrical standards are compatible before placing your order.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eWhat's in the box:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e58 mm bottomless portafilter with black ergonomic handle\u003c\/li\u003e\n\u003cli\u003eTamper with black ergonomic handle\u003c\/li\u003e\n\u003cli\u003e10 oz stainless steel steaming pitcher\u003c\/li\u003e\n\u003cli\u003e18 g single wall double shot basket\u003c\/li\u003e\n\u003cli\u003e18 g pressurized double shot basket\u003c\/li\u003e\n\u003cli\u003eShot splitter attachment\u003c\/li\u003e\n\u003cli\u003eBackflush disc (blind filter)\u003c\/li\u003e\n\u003cli\u003eSteam wand tip cleaner\u003c\/li\u003e\n\u003cli\u003eRemovable drip tray with max fill indicator\u003c\/li\u003e\n\u003cli\u003eWater hardness test strip\u003c\/li\u003e\n\u003cli\u003eDescaler tablets\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Fellow","offers":[{"title":"Default Title","offer_id":52909533135157,"sku":"GEA-FEL-SERI-ONE-NOI","price":1995.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/2716\/1842\/files\/fellow-espresso-series1-11.jpg?v=1779376397"}],"url":"https:\/\/zabcafe.com\/en\/collections\/nouveautes.oembed","provider":"Zab Café","version":"1.0","type":"link"}