BRÉSIL - JOYEUX ROGER
Notes de dégustation BROWNIE + NOISETTE + CRÉMEUX ‹ › Approvisionnement ORIGINE Campo das Vertentes, Minas Gerais, Brésil PRODUCTEUR.RICE Plusieurs producteur.rices de Sancoffee VA RIÉTÉS Catucai jaune, Mundo Novo, Catuai rouge, Topázio PROCÉDÉ Naturel ALTITUDE 900 – 1200 m PARTENAIRES Crop to Cup VOLUME ACHETÉ 96 600 kg FAB 2,40 $ US/LB PRIX LIVRÉ 4,55 $ CAD/LB RELATION 2 ans Informations sur le café Sancoffee est une coopérative indépendante certifiée B-Corp, originaire de la région de Campo das Vertentes, dans l'État de Minas Gerais, au Brésil. Sancoffee regroupe 20 fermes membres et soutient 600 petit.tes producteur.rices, partageant une vision collective axée sur la durabilité, la qualité et l'impact communautaire. La coopérative allie fièrement sa riche tradition caféière, remontant à 1860, à des initiatives modernes favorisant la préservation de l'environnement et le progrès social. Pour en apprendre plus, visitez leur site web. Des programmes de la coopérative comme Beyond Borders offrent aux petit.tes producteur.rices des outils et un soutien technique, leur permettant de gagner en reconnaissance et de valoriser leur travail. Grâce à des ateliers éducatifs et des formations pour la jeunesse, Sancoffee investit dans l'avenir de ses communautés, favorisant une croissance durable et des opportunités pour tous. Sancoffee a atteint la neutralité carbone en 2020, devenant un pionnier de la production de café respectueuse de l'environnement. Ses efforts incluent la restauration de la biodiversité, la plantation d'arbres indigènes et la recherche pour réduire l'empreinte carbone au niveau des exploitations agricoles. En gros Vous voulez commander deux sacs de 5 lbs ou plus? Visitez notre section EN GROS pour profiter d'un rabais de volume! Espresso — paramètres recommandés Café moulu 18,5 g Café dans la tasse 30 g Temps d'extraction 32 sec À noter — Recette optimisée pour un panier de 18 g. Ajuster légèrement la mouture pour atteindre 32 secondes d'extraction. Paramètres pour la Fellow Aiden Télécharge le profil Joyeux Roger pour la machine Aiden de Fellow! V60 – Recette Ratio 1:15 15 g in – 225 g out Température de l'eau : 85 °C Démarrer Stop Timer 0:00 ℹ️ Appuie sur "Démarrer" pour garder l'écran allumé. 0:00 Phase 1 — Bloom Verser pendant 0:10s Total 35 g 0:30 Phase 2 Verser pendant 0:30s Total 170 g +135 g 1:30 Phase 3 Verser pendant 0:15s Total 225 g +55 g 3:00 Temps final écoulement complet ℹ️ Astuce — Si le temps total est plus court, la mouture est probablement trop grosse. S'il est plus long, la mouture est probablement trop fine. @keyframes v60PulsePhase { 0% { transform: scale(1); box-shadow: 0 0 0 0 rgba(200,169,126,.35); } 50% { transform: scale(1.06); box-shadow: 0 0 0 10px rgba(200,169,126,0); } 100% { transform: scale(1); box-shadow: 0 0 0 0 rgba(200,169,126,0); } } .v60-pulse { animation: v60PulsePhase 700ms ease-out 1; transform-origin: center; will-change: transform; } @keyframes v60BlinkPill { 0%, 100% { opacity: 1; transform: scale(1); } 50% { opacity: .22; transform: scale(1.03); } } .v60-pill-pour-active { background: #ffe7b7 !important; border: 2px solid #d2a44a !important; color: #3b2a12 !important; font-weight: 900 !important; letter-spacing: .02em; animation: v60BlinkPill 2500ms ease-in-out infinite; box-shadow: 0 0 0 2px rgba(210,164,74,.18) inset, 0 10px 22px rgba(0,0,0,.12), 0 0 0 6px rgba(210,164,74,.10); } @media (prefers-reduced-motion: reduce) { .v60-pill-pour-active { animation: none; } .v60-pulse { animation: none; } } @media (max-width: 600px) { .logos-sancoffee { justify-content: center !important; gap: 16px !important; } .logos-sancoffee > a { width: 100% !important; text-align: center !important; } .logos-certs-sancoffee { width: 100% !important; justify-content: center !important; } } (function() { /* ===== CARROUSEL ===== */ var cSuffix = '-sancoffee'; var cImgs = document.querySelectorAll('.carousel-img' + cSuffix); var cDots = document.querySelectorAll('.carousel-dot' + cSuffix); var cPrev = document.getElementById('carousel-prev' + cSuffix); var cNext = document.getElementById('carousel-next' + cSuffix); var cIndex = 0; var cTimer = null; function cShow(i) { cIndex = (i + cImgs.length) % cImgs.length; for (var k = 0; k < cImgs.length; k++) cImgs[k].style.opacity = (k === cIndex) ? '1' : '0'; for (var d = 0; d < cDots.length; d++) cDots[d].style.opacity = (d === cIndex) ? '1' : '.5'; } function cStart() { cStop(); cTimer = setInterval(function() { cShow(cIndex + 1); }, 5000); } function cStop() { if (cTimer) { clearInterval(cTimer); cTimer = null; } } if (cPrev) cPrev.addEventListener('click', function() { cShow(cIndex - 1); cStart(); }); if (cNext) cNext.addEventListener('click', function() { cShow(cIndex + 1); cStart(); }); for (var dd = 0; dd < cDots.length; dd++) { (function(node) { node.addEventListener('click', function() { cShow(parseInt(node.getAttribute('data-i'), 10)); cStart(); }); })(cDots[dd]); } cShow(0); cStart(); /* ===== TIMER V60 ===== */ var SUFFIX = '-joyeuxroger'; var END_AT = 180; var phases = [ { key: 1, t: 0, pourLen: 10 }, { key: 2, t: 30, pourLen: 30 }, { key: 3, t: 90, pourLen: 15 } ]; var latte = { cardBg: '#f6f1ea', cardBorder: '#c8a97e', pillBg: '#eadfce' }; var details = document.getElementById('v60Details' + SUFFIX); var startBtn = document.getElementById('v60StartBtn' + SUFFIX); var stopBtn = document.getElementById('v60StopBtn' + SUFFIX); var timerEl = document.getElementById('v60Timer' + SUFFIX); var statusEl = document.getElementById('v60WakeStatus' + SUFFIX); var pills = { 1: document.getElementById('v60-pill-1' + SUFFIX), 2: document.getElementById('v60-pill-2' + SUFFIX), 3: document.getElementById('v60-pill-3' + SUFFIX) }; var cards = { 1: document.getElementById('v60-card-1' + SUFFIX), 2: document.getElementById('v60-card-2' + SUFFIX), 3: document.getElementById('v60-card-3' + SUFFIX) }; function setCardActive(key) { Object.keys(cards).forEach(function(k) { var c = cards[k]; if (!c) return; if (parseInt(k) === key) { c.style.borderColor = latte.cardBorder; c.style.background = latte.cardBg; c.style.boxShadow = '0 0 0 2px rgba(200,169,126,.25) inset, 0 8px 22px rgba(200,169,126,.28)'; } else { c.style.borderColor = 'rgba(0,0,0,.18)'; c.style.background = 'transparent'; c.style.boxShadow = 'none'; } }); } function setPillPhaseActive(key, doPulse) { Object.keys(pills).forEach(function(k) { var p = pills[k]; if (!p) return; p.style.background = 'rgba(0,0,0,.05)'; p.style.borderColor = 'rgba(0,0,0,.12)'; p.style.boxShadow = 'none'; p.classList.remove('v60-pulse'); }); var pill = pills[key]; if (pill) { pill.style.background = latte.pillBg; pill.style.borderColor = latte.cardBorder; pill.style.boxShadow = '0 0 0 2px rgba(200,169,126,.25) inset'; if (doPulse) { pill.classList.remove('v60-pulse'); void pill.offsetWidth; pill.classList.add('v60-pulse'); } } } function resetPourPills() { Object.values(pills).forEach(function(p) { if (!p) return; p.classList.remove('v60-pill-pour-active'); }); } function setPourPillActive(key) { resetPourPills(); if (!key) return; var pill = pills[key]; if (pill) pill.classList.add('v60-pill-pour-active'); } function clearAll() { Object.values(cards).forEach(function(c) { if (!c) return; c.style.borderColor = 'rgba(0,0,0,.18)'; c.style.background = 'transparent'; c.style.boxShadow = 'none'; }); Object.values(pills).forEach(function(p) { if (!p) return; p.style.background = 'rgba(0,0,0,.05)'; p.style.borderColor = 'rgba(0,0,0,.12)'; p.style.boxShadow = 'none'; p.classList.remove('v60-pulse'); p.classList.remove('v60-pill-pour-active'); }); } var wakeLock = null; var startTime = null; var rafId = null; var lastPhaseKey = null; var lastPourKey = null; function fmt(sec) { sec = Math.max(0, Math.floor(sec)); var m = Math.floor(sec / 60); var s = sec % 60; return m + ':' + (s < 10 ? '0' : '') + s; } function getCurrentPhaseKey(elapsed) { var current = phases[0].key; for (var i = 0; i < phases.length; i++) if (elapsed >= phases[i].t) current = phases[i].key; return current; } function getPourKey(elapsed) { for (var i = phases.length - 1; i >= 0; i--) { var p = phases[i]; if (elapsed >= p.t && elapsed < (p.t + p.pourLen)) return p.key; } return null; } function enableWakeLock() { if (!('wakeLock' in navigator)) { statusEl.textContent = '\u26a0\ufe0f Ton navigateur ne supporte pas le mode \xe9cran allum\xe9.'; return Promise.resolve(); } return navigator.wakeLock.request('screen').then(function(wl) { wakeLock = wl; statusEl.textContent = '\u2705 \xc9cran maintenu allum\xe9 pendant la recette.'; wakeLock.addEventListener('release', function() { statusEl.textContent = '\u2139\ufe0f Mode \xe9cran allum\xe9 rel\xe2ch\xe9.'; }); }).catch(function() { statusEl.textContent = '\u26a0\ufe0f Impossible d\'activer le mode \xe9cran allum\xe9.'; wakeLock = null; }); } function disableWakeLock() { if (wakeLock) { wakeLock.release(); wakeLock = null; } } function setButtons(running) { startBtn.disabled = running; stopBtn.disabled = !running; stopBtn.style.opacity = running ? '1' : '.5'; } function tick() { var elapsed = (Date.now() - startTime) / 1000; timerEl.textContent = fmt(elapsed); var phaseKey = getCurrentPhaseKey(elapsed); if (phaseKey !== lastPhaseKey) { setCardActive(phaseKey); setPillPhaseActive(phaseKey, lastPhaseKey !== null); lastPhaseKey = phaseKey; } var pourKey = getPourKey(elapsed); if (pourKey !== lastPourKey) { setPourPillActive(pourKey); lastPourKey = pourKey; } if (elapsed >= END_AT) { stopRecipe(true); return; } rafId = requestAnimationFrame(tick); } function startRecipe() { setButtons(true); timerEl.textContent = '0:00'; lastPhaseKey = null; lastPourKey = null; enableWakeLock().then(function() { setCardActive(1); setPillPhaseActive(1, false); setPourPillActive(1); lastPhaseKey = 1; lastPourKey = 1; startTime = Date.now(); if (rafId) cancelAnimationFrame(rafId); rafId = requestAnimationFrame(tick); }); } function stopRecipe(autoEnded) { if (rafId) cancelAnimationFrame(rafId); rafId = null; startTime = null; disableWakeLock(); setButtons(false); clearAll(); lastPhaseKey = null; lastPourKey = null; if (autoEnded) { statusEl.textContent = '\u2705 Recette termin\xe9e \u2014 \xe9cran lib\xe9r\xe9.'; timerEl.textContent = fmt(END_AT); } else { statusEl.textContent = '\u2139\ufe0f Recette arr\xeat\xe9e \u2014 \xe9cran lib\xe9r\xe9.'; } } startBtn.addEventListener('click', startRecipe); stopBtn.addEventListener('click', function() { stopRecipe(false); }); details.addEventListener('toggle', function() { if (!details.open) stopRecipe(false); }); document.addEventListener('visibilitychange', function() { if (document.visibilityState === 'visible' && startTime && !wakeLock) enableWakeLock(); }); })();
More you might like
Related
BRÉSIL - JOYEUX ROGER - EN GROS
Related
Zab coffee roaster – BRAZIL - JOYEUX ROGER
Related