Personal Recipe Collection

The Coffee Book

Curated recipes by origin · process · roaster

Filter
Colombia · La Cabana
Sweet Washed
Iced V60
Local Roaster · La Cabana
Washed V60 🧊 Iced
Coffee17 g
Hot water170 ml
Ice85 g
Temp94 °C
GrindMedium-fine
Total time3:00 min
Green apple, strawberry, caramel on ice. Brewed concentrated directly onto ice — crisp and sweet.
Colombia · La Cabana
Caramel Shot
Iced Espresso
Local Roaster · DeLonghi Dedica
Washed Espresso 🧊 Iced
Dose17 g
Yield34 g
Ice60–80 g
Temp94 °C
GrindFine
Shot time28–32 s
Caramel sweetness, apple acidity, thick crema — pulled directly over ice. Clean and bright.
Costa Rica · El Mango
Tropical Honey
Iced AeroPress
ضحى محمصة · El Mango
Honey AeroPress 🧊 Iced
Coffee20 g
Hot water140 ml
Ice80 g
Temp88 °C
GrindMedium-fine
Total time2:30 min
Mango, blueberry, floral sweetness — pressed concentrated over ice. Syrupy and tropical.
Costa Rica · El Mango
Mango Honey
Iced Espresso
ضحى محمصة · DeLonghi Dedica
Honey Espresso 🧊 Iced
Dose17 g
Yield38 g
Ice60–80 g
Temp92 °C
GrindFine
Shot time30–34 s
Tropical mango, blueberry — shot pulled over ice. Creamy, fruity, zero bitterness.
Ethiopia · Chelchele
Wild Yeast
Iced V60
Caffeine Batch · Chelchele
Yeast V60 🧊 Iced
Coffee16 g
Hot water160 ml
Ice80 g
Temp93 °C
GrindMedium-fine
Total time2:45 min
Blueberry, red apple, orange blossom on ice. Cold amplifies the fruit and tames the fermentation.
Ethiopia · Chelchele
Fermented Fruit
Iced Espresso
Caffeine Batch · DeLonghi Dedica
Yeast Espresso 🧊 Iced
Dose17 g
Yield40 g
Ice60–80 g
Temp91 °C
GrindFine
Shot time32–36 s
Blueberry jam, tamarind, orange blossom — pulled over ice. The cold locks in the fruit and kills any funky edge.
const recipes = { r4: { origin: 'Colombia · La Cabana', name: 'Sweet Washed Iced V60', roaster: 'Local Roaster · La Cabana', process: 'Washed', method: 'Iced V60', approved: false, params: [ { l: 'Coffee', v: '17 g' }, { l: 'Hot water', v: '170 ml' }, { l: 'Ice (in server)', v: '85 g' }, { l: 'Temperature', v: '94 °C' }, { l: 'Grind', v: 'Medium-fine' }, { l: 'Total time', v: '3:00 min' }, ], steps: [ 'SETUP · Place 85 g of ice directly into your server or cup beneath the V60. The ice is part of the recipe — it melts into the final brew volume (~255 ml total). Rinse the filter with hot water and discard.', 'Grind 17 g at medium-fine. Slightly finer than a hot V60 — the concentrated brew needs a bit more extraction to compensate for the dilution from the ice.', 'Add grounds, level the bed, tare your scale.', 'BLOOM — 0:00 to 0:45 · Pour 50 ml at 94 °C in a slow center spiral. The higher temp (vs. hot brew) is intentional — you need full extraction since only 170 ml of hot water is used. Stir once. Wait 45 seconds.', 'POUR 1 — 0:45 to 1:20 · Pour to 100 ml total in tight concentric circles. The concentrated brew will drip directly onto the ice below — you\'ll hear it hit and see steam rise. This is correct.', 'POUR 2 — 1:30 to 2:00 · Continue to 140 ml total. Keep pours slow and steady — the smaller water volume means every pour has more impact on extraction.', 'POUR 3 — 2:05 to 2:25 · Final pour to 170 ml. End with a slow center pour.', 'DRAIN — 2:25 to 3:00 · Let draw down fully. Swirl the server gently to help melt the ice evenly into the concentrate. Serve immediately over the remaining ice.', ], notes: 'This is the Japanese iced pour over method — brew hot and concentrated directly onto ice. The rapid chilling locks in the green apple and strawberry aromatics that would fade if the coffee cooled slowly. The total brew volume after ice melt is ~250 ml. Do not add more ice to the cup — the recipe accounts for dilution. The washed process makes this exceptionally clean and bright on ice.' }, r5: { origin: 'Colombia · La Cabana', name: 'Caramel Shot Iced Espresso', roaster: 'Local Roaster · DeLonghi Dedica', process: 'Washed', method: 'Iced Espresso', approved: false, params: [ { l: 'Dose (in)', v: '17 g' }, { l: 'Yield (out)', v: '34 g' }, { l: 'Ice in cup', v: '60–80 g' }, { l: 'Temperature', v: '94 °C' }, { l: 'Grind', v: 'Fine' }, { l: 'Shot time', v: '28–32 s' }, ], steps: [ 'SETUP · Fill your serving glass with 60–80 g of ice before pulling the shot. The shot goes directly over the ice — no waiting, no cooling separately.', 'DOSE & DISTRIBUTE · Weigh 17 g into the portafilter. Distribute evenly — WDT or a light tap. An even puck is even more important for iced espresso since any channeling produces sour notes that are harsh cold.', 'TAMP · Tamp straight and firm at ~15 kg. Consistent tamp = consistent flow = no bitter channels.', 'PULL · Place the ice-filled glass under the portafilter spout. Start timer and brew. First drop at 6–8 s. Pull to exactly 34 g between 28–32 s. Stop at 34 g — do not go longer.', 'CHILL & SERVE · The hot shot hits the ice and chills instantly. Swirl the glass once to distribute. The ice melts slightly into the shot, diluting it to the right drinking strength. Drink within 2 minutes — iced espresso oxidizes fast.', 'EVALUATE · Color should be deep amber. Taste: caramel sweetness, bright green apple, clean finish — no bitterness. If sour → grind finer. If bitter → grind coarser or reduce yield to 30 g.', ], notes: 'Pulling espresso directly over ice is the fastest and cleanest iced coffee method. The shock-chilling from the ice locks in the caramel and apple sweetness of this washed Colombian while killing any potential bitterness. Use large, dense ice cubes — small cubes melt too fast and over-dilute. This recipe does not need milk or sweetener.' }, r6: { origin: 'Costa Rica · El Mango', name: 'Tropical Honey Iced AeroPress', roaster: 'ضحى محمصة · El Mango', process: 'Honey', method: 'Iced AeroPress', approved: false, params: [ { l: 'Coffee', v: '20 g' }, { l: 'Hot water', v: '140 ml' }, { l: 'Ice (in cup)', v: '80 g' }, { l: 'Temperature', v: '88 °C' }, { l: 'Grind', v: 'Medium-fine' }, { l: 'Total time', v: '2:30 min' }, ], steps: [ 'SETUP · Place 80 g of ice into your serving glass. Set AeroPress up in inverted position. Pre-rinse paper filter in cap. The AeroPress will press concentrated coffee directly onto the ice.', 'Grind 20 g at medium-fine. Slightly finer than a hot AeroPress brew to compensate for the reduced water volume (140 ml instead of 220 ml).', 'POUR — 0:00 to 0:20 · Pour all 140 ml at 88 °C in a slow spiral. The lower temp protects the honey-process mango and blueberry aromatics — critical on an iced brew where these notes are the star.', 'STIR — 0:20 to 0:30 · Stir 12 times firmly. The concentrated brew needs full saturation — no dry grounds.', 'STEEP — 0:30 to 1:45 · Attach cap firmly. Steep undisturbed for 75 seconds. The longer steep on a smaller volume extracts the honey-process sweetness fully.', 'FLIP — 1:45 · Flip the AeroPress confidently directly over the ice-filled glass.', 'PRESS — 1:45 to 2:30 · Press slowly and steadily over 45 seconds directly onto the ice. The hot concentrate hits the ice and chills instantly. Stop at the hiss. Swirl gently — the ice melts into the concentrate to reach drinking strength.', ], notes: 'This iced AeroPress uses a concentrated brew ratio (20 g / 140 ml) that accounts for ice dilution. The result is a 220 ml iced drink after the ice melts — full-bodied, syrupy, and tropical. The honey process on El Mango makes this the sweetest iced coffee in the collection: mango and blueberry flavors are amplified by the cold, not dulled. Never add extra ice to the finished drink — the dilution is calibrated.' }, r7: { origin: 'Costa Rica · El Mango', name: 'Mango Honey Iced Espresso', roaster: 'ضحى محمصة · DeLonghi Dedica', process: 'Honey', method: 'Iced Espresso', approved: false, params: [ { l: 'Dose (in)', v: '17 g' }, { l: 'Yield (out)', v: '38 g' }, { l: 'Ice in cup', v: '60–80 g' }, { l: 'Temperature', v: '92 °C' }, { l: 'Grind', v: 'Fine' }, { l: 'Shot time', v: '30–34 s' }, ], steps: [ 'SETUP · Fill serving glass with 60–80 g of large ice cubes. Warm Dedica 15+ minutes. Run a flush shot. Keep the portafilter and basket very clean — honey-process oils accumulate fast and add bitterness.', 'DOSE & DISTRIBUTE · Weigh 17 g. WDT is essential — honey-process grounds clump more than washed. Eliminate all dry pockets before tamping.', 'TAMP · Tamp straight and firm. The honey-process puck is denser — ensure the seal is even across the entire basket.', 'PULL · Place the ice-filled glass under the spout. Start timer, begin brew. First drop at 7–9 s. Pull to 38 g between 30–34 s. The hot shot lands directly on the ice and flash-chills.', 'CHILL & SERVE · Swirl immediately. The mango and blueberry flavors intensify as the shot cools rapidly. Drink within 2 minutes. The ice will continue melting — do not let it sit.', 'EVALUATE · Deep amber color, dense texture. Taste: honey sweetness entry, mango mid-palate, blueberry in the cold finish. If over-diluted → use fewer, larger ice cubes. If bitter → grind coarser.', ], notes: 'The honey-process El Mango is the most naturally sweet bean in this collection and is exceptional as an iced espresso. The cold amplifies the tropical mango and blueberry notes while completely suppressing any bitter edges. Running the Dedica at 92 °C (slightly cooler) protects the fruit aromatics during extraction. Use the largest ice cubes available — large cubes melt slowly, controlling dilution precisely. This is a standalone drink — no milk needed.' }, r8: { origin: 'Ethiopia · Chelchele', name: 'Wild Yeast Iced V60', roaster: 'Caffeine Batch · Chelchele', process: 'Yeast', method: 'Iced V60', approved: false, params: [ { l: 'Coffee', v: '16 g' }, { l: 'Hot water', v: '160 ml' }, { l: 'Ice (in server)', v: '80 g' }, { l: 'Temperature', v: '93 °C' }, { l: 'Grind', v: 'Medium-fine' }, { l: 'Total time', v: '2:45 min' }, ], steps: [ 'SETUP · Place 80 g of ice in your server or cup. Rinse filter, discard water. The yeast-process Chelchele is naturally light-bodied — the iced Japanese method and 1:15 effective ratio (after melt) build sweetness without needing more water.', 'Grind 16 g at medium-fine, slightly finer than a standard hot V60. The concentrated brew needs a bit more extraction surface to compensate for the smaller water volume.', 'Add grounds, level bed, tare scale.', 'BLOOM — 0:00 to 0:50 · Pour 48 ml at 93 °C in a tight center spiral. Wait the full 50 seconds — yeast-process coffee releases CO₂ very aggressively. A full bloom is non-negotiable or the first pour will be uneven.', 'POUR 1 — 0:50 to 1:20 · Pour to 100 ml total in slow, tight circles. Concentrated pours — keep them controlled. The coffee dripping onto ice below will look very dark. This is correct.', 'POUR 2 — 1:30 to 1:55 · Continue to 135 ml. Very slow, no turbulence. The yeast process makes this bean sensitive to agitation — rough pours = funky extraction.', 'POUR 3 — 2:00 to 2:15 · Final pour to 160 ml total. A gentle center finish.', 'DRAIN — 2:15 to 2:45 · Let draw down fully. Swirl the server to blend concentrate with ice melt. The cold immediately tames the yeast character and amplifies the blueberry and red apple. Serve immediately.', ], notes: 'The Chelchele yeast process on ice is a revelation — the cold eliminates any risk of the fermentation character turning funky, leaving only the blueberry, red apple, and orange blossom notes. At 93 °C (slightly higher than the hot version) the concentrated extraction is full and sweet. Total volume after ice melt is ~235 ml. The Heirloom Hurlijum variety adds a floral complexity that is best appreciated cold. This is the most complex-tasting iced coffee in the collection.' }, r9: { origin: 'Ethiopia · Chelchele', name: 'Fermented Fruit Iced Espresso', roaster: 'Caffeine Batch · DeLonghi Dedica', process: 'Yeast', method: 'Iced Espresso', approved: false, params: [ { l: 'Dose (in)', v: '17 g' }, { l: 'Yield (out)', v: '40 g' }, { l: 'Ice in cup', v: '60–80 g' }, { l: 'Temperature', v: '91 °C' }, { l: 'Grind', v: 'Fine' }, { l: 'Shot time', v: '32–36 s' }, ], steps: [ 'SETUP · Fill serving glass with 60–80 g of large ice. Run two flush shots on the Dedica — yeast-process residue in the group head ruins the shot. The portafilter basket must be perfectly clean.', 'DOSE & DISTRIBUTE · 17 g exactly. WDT is essential — this light-roasted, dense bean clumps significantly. Stir thoroughly with a thin needle before tamping to eliminate any dry channels.', 'TAMP · Tamp level and firm. Any angle = channeling = sour yeast taste in the cup. Take your time here.', 'PULL · Place ice glass under the spout. Start timer. First drop at 8–10 s (normal for a dense light roast). Pull to 40 g between 32–36 s. The shot falls directly onto ice and chills instantly.', 'CHILL & SERVE · Swirl the glass immediately. The rapid chilling kills the yeast fermentation edge and unlocks the blueberry jam and orange blossom in the cold. Drink within 90 seconds — this shot evolves fast on ice.', 'EVALUATE · Light amber crema (normal for light roast), complex aroma. Taste: blueberry sweetness, tamarind depth, orange blossom finish. If yeast/sour → pull to 42 g next time. If flat → grind finer.', ], notes: 'The Chelchele yeast-process iced espresso is the boldest and most complex shot in this collection. The cold is essential — it neutralizes the fermentation character that can dominate at room temperature and brings the blueberry, red apple, and tamarind into sharp focus. The 1:2.35 ratio (40 g yield) is longer than classic specifically to dilute the yeast fermentation flavor while keeping the fruit notes concentrated. On ice this becomes a perfectly balanced, fruit-forward espresso.' } r10: { origin: 'Blend · Black Knight', name: 'Adham Hot V60', roaster: 'Black Knight · Adham Blend', process: 'Blend', method: 'Hot V60', approved: false, params: [ { l: 'Coffee', v: '20 g' }, { l: 'Water', v: '300 ml' }, { l: 'Ratio', v: '1 : 15' }, { l: 'Temperature', v: '93 °C' }, { l: 'Grind', v: 'Medium' }, { l: 'Total time', v: '3:30 min' }, ], steps: [ 'SETUP · Rinse V60 filter with hot water, discard. Pre-heat your mug. Adham is a blend designed for sweetness and low acidity (3.75/10) — this recipe extracts maximum honey and caramel character.', 'Grind 20 g at medium — slightly coarser than a single-origin V60. Blends benefit from a more open grind to avoid over-extraction of the darker components.', 'Add grounds, level the bed, tare scale.', 'BLOOM — 0:00 to 0:45 · Pour 60 ml (3× dose) in a slow center spiral. Wait the full 45 seconds. The blend releases CO₂ steadily — a good bloom guarantees even extraction across all components.', 'POUR 1 — 0:45 to 1:20 · Pour to 150 ml total in steady concentric circles. Keep the water level consistent — do not let the bed dry between pours.', 'POUR 2 — 1:30 to 2:05 · Continue to 225 ml. Maintain a slow, even flow from center outward.', 'POUR 3 — 2:15 to 2:35 · Final pour to 300 ml. Gentle center pour to settle the bed flat.', 'DRAIN — 2:35 to 3:30 · Full draw-down by 3:30. The honey and caramel notes develop fully in the finish — do not rush.', ], notes: 'Adham is Black Knight\'s signature blend, built around honey, caramel, and toasted nut notes with an intentionally low acidity (3.75/10). At 93 °C, the caramel sweetness opens without any sharpness. This is a hot recipe — the warmth is essential for the nut and honey character to bloom fully in the cup. The 1:15 ratio builds a medium-to-heavy body that matches the blend\'s profile.' }, r11: { origin: 'Blend · Black Knight', name: 'Adham Hot Espresso', roaster: 'Black Knight · DeLonghi Dedica', process: 'Blend', method: 'Hot Espresso', approved: false, params: [ { l: 'Dose (in)', v: '17 g' }, { l: 'Yield (out)', v: '34 g' }, { l: 'Ratio', v: '1 : 2' }, { l: 'Temperature', v: '93 °C' }, { l: 'Grind', v: 'Fine' }, { l: 'Shot time', v: '26–30 s' }, ], steps: [ 'SETUP · Warm Dedica 15+ minutes. Run a flush shot. Adham is a blend with medium-dark roast components — the machine needs to be fully stabilized or the shot will pull unevenly.', 'DOSE & DISTRIBUTE · Weigh 17 g. Distribute with WDT or light taps. Blend grounds are more consistent in density than single-origins — distribution is slightly easier but still important.', 'TAMP · Tamp firm and level. Blends are forgiving of minor tamp variations but not of angle — keep it perpendicular.', 'PULL · Start timer, begin brew. First drop at 5–7 s (slightly faster than single-origin — blend components extract readily). Pull to 34 g between 26–30 s. Stop precisely — going longer on a blend extracts bitter roast notes.', 'SERVE HOT · Pour into a pre-warmed demitasse. Drink immediately — the honey and caramel notes are most prominent in the first 60 seconds.', 'EVALUATE · Thick, golden-brown crema. Taste: honey entry, caramel through the middle, walnut finish. If sour → grind finer. If roasty/bitter → reduce yield to 32 g.', ], notes: 'The Adham blend is built for espresso — the honey and caramel notes concentrate beautifully at a 1:2 ratio. At 93 °C the blend extracts sweetly without exposing the darker roast components. This is a hot shot — do not serve over ice, as the cold suppresses the nut and caramel character that defines Adham. Exceptional as a standalone shot or the base of a hot oat milk cortado.' }, r12: { origin: 'Uganda · Bugisu', name: 'Victoria Hot V60', roaster: 'Black Knight · Victoria Natural', process: 'Natural', method: 'Hot V60', approved: false, params: [ { l: 'Coffee', v: '20 g' }, { l: 'Water', v: '300 ml' }, { l: 'Ratio', v: '1 : 15' }, { l: 'Temperature', v: '92 °C' }, { l: 'Grind', v: 'Medium' }, { l: 'Total time', v: '3:30 min' }, ], steps: [ 'SETUP · Rinse filter, discard, pre-heat vessel. Victoria is a full-body natural Uganda — the hot brew brings out the mandarin and grape depth that cold brewing compresses.', 'Grind 20 g at medium. Uganda naturals are dense and benefit from a slightly more open grind — too fine and the full body turns heavy and astringent.', 'Add grounds, level bed, tare scale.', 'BLOOM — 0:00 to 0:50 · Pour 60 ml in a slow center spiral. Wait 50 seconds — natural-process Ugandan coffee releases CO₂ slowly due to its density. A full bloom is essential.', 'POUR 1 — 0:50 to 1:25 · Pour to 150 ml in steady, slow circles. The natural process brings inherent sweetness — let the water do the work without rushing.', 'POUR 2 — 1:35 to 2:10 · Continue to 225 ml. Keep pours centered and even — no turbulence.', 'POUR 3 — 2:20 to 2:40 · Final pour to 300 ml. A deliberate, slow center pour.', 'DRAIN — 2:40 to 3:30 · Draw down by 3:30. The mandarin and grape notes deepen as the brew cools slightly in the cup.', ], notes: 'Victoria is a full-body natural from Uganda\'s Bugisu region at 1700m, with variety SL 14 & 28. The label says Body: Full — and it delivers. At 92 °C the mandarin zest and grape sweetness come forward without the brew turning heavy. Honey and nut notes emerge in the finish. This is hot-only — the full body of a natural Ugandan is best appreciated warm, where the sweetness coats the palate fully.' }, r13: { origin: 'Uganda · Bugisu', name: 'Victoria Hot Espresso', roaster: 'Black Knight · DeLonghi Dedica', process: 'Natural', method: 'Hot Espresso', approved: false, params: [ { l: 'Dose (in)', v: '17 g' }, { l: 'Yield (out)', v: '36 g' }, { l: 'Ratio', v: '1 : 2.1' }, { l: 'Temperature', v: '92 °C' }, { l: 'Grind', v: 'Fine' }, { l: 'Shot time', v: '28–32 s' }, ], steps: [ 'SETUP · Warm Dedica fully. Run one flush. Natural Ugandan beans are oily and dense — the portafilter and basket must be completely clean or residue turns the shot muddy.', 'DOSE & DISTRIBUTE · Weigh 17 g. WDT recommended — SL 14 & 28 variety grounds clump noticeably. Stir thoroughly before tamping.', 'TAMP · Firm and level. Natural-process pucks are denser — apply slightly more pressure than a washed bean.', 'PULL · Start timer. First drop at 7–9 s. Pull to 36 g between 28–32 s. The 1:2.1 ratio is slightly longer than classic — it allows the mandarin and grape notes to fully develop without the natural-process sweetness becoming cloying.', 'SERVE HOT · Into a warmed demitasse immediately. The full body of this shot is most impressive at 60–65 °C.', 'EVALUATE · Dark amber, thick crema, honey-like viscosity. Taste: mandarin entry, grape mid, honey-nut finish. If flat → grind finer. If too thick/sweet → grind coarser slightly.', ], notes: 'Victoria as a hot espresso is exceptional — the full body (SL 14 & 28 at 1700m altitude) translates to a syrupy, dense shot with mandarin sweetness and grape depth. At 92 °C the extraction is sweet and complete without bitterness. The 1:2.1 ratio gives it more length than a classic shot, allowing the complexity of a natural Ugandan to unfold across the palate. Drink it straight — nothing should be added.' }, r14: { origin: 'Colombia · Castillo & Caturra', name: 'Alba Hot V60', roaster: 'Soil Roasters · Alba', process: 'Natural', method: 'Hot V60', approved: false, params: [ { l: 'Coffee', v: '20 g' }, { l: 'Water', v: '300 ml' }, { l: 'Ratio', v: '1 : 15' }, { l: 'Temperature', v: '91 °C' }, { l: 'Grind', v: 'Medium-fine' }, { l: 'Total time', v: '3:15 min' }, ], steps: [ 'SETUP · Rinse filter, discard, pre-heat mug. Alba is a natural Colombian with high fruity complexity (pomegranate, peach, strawberry) — 91 °C is intentionally lower to protect these vibrant top notes.', 'Grind 20 g at medium-fine. Castillo and Caturra are dense varieties — a slightly finer grind extracts the strawberry and peach sweetness without rushing.', 'Add grounds, level bed, tare scale.', 'BLOOM — 0:00 to 0:45 · Pour 60 ml in a slow center spiral. The natural Colombian releases CO₂ expressively — you may smell pomegranate immediately. Wait 45 seconds.', 'POUR 1 — 0:45 to 1:20 · Pour to 150 ml in steady circles. Slow and deliberate — the fruity notes in a natural Colombian are fragile and benefit from gentle pours.', 'POUR 2 — 1:30 to 2:00 · Continue to 230 ml. Keep the water level from dropping below the coffee bed.', 'POUR 3 — 2:10 to 2:25 · Final pour to 300 ml. A slow, centered pour to close.', 'DRAIN — 2:25 to 3:15 · Full draw-down by 3:15. The peach and strawberry notes develop as the cup cools slightly — let it sit 30 seconds before drinking.', ], notes: 'Alba from Soil Roasters is a natural Colombian with Castillo and Caturra varieties delivering pomegranate, peach, and strawberry. At 91 °C these fruit notes come forward without the brew turning jammy or losing clarity. The hot format is intentional — the warmth amplifies the pomegranate complexity in a way iced brewing cannot. A medium-to-high acidity bean that rewards a patient, slow pour technique.' }, r15: { origin: 'Colombia · Castillo & Caturra', name: 'Alba Hot Espresso', roaster: 'Soil Roasters · DeLonghi Dedica', process: 'Natural', method: 'Hot Espresso', approved: false, params: [ { l: 'Dose (in)', v: '17 g' }, { l: 'Yield (out)', v: '38 g' }, { l: 'Ratio', v: '1 : 2.2' }, { l: 'Temperature', v: '91 °C' }, { l: 'Grind', v: 'Fine' }, { l: 'Shot time', v: '30–34 s' }, ], steps: [ 'SETUP · Warm Dedica 15+ minutes. Run a flush shot. Natural Colombian beans like Alba have residual fruit sugars — a clean, stable machine temperature is critical to avoid inconsistent extraction.', 'DOSE & DISTRIBUTE · 17 g exactly. Castillo and Caturra are fairly uniform varieties — WDT recommended but distribution is more forgiving than yeast-process or honey-process beans.', 'TAMP · Level and firm. The natural process adds slight density — tamp with consistent pressure.', 'PULL · Start timer. First drop at 7–8 s. Pull to 38 g between 30–34 s. The 1:2.2 ratio is essential — shorter and the pomegranate acidity dominates; longer and you lose sweetness. 38 g is the sweet spot.', 'SERVE HOT · Into a warm demitasse immediately. The peach and strawberry notes are most vivid in the first 45 seconds.', 'EVALUATE · Rich amber, fragrant crema. Taste: pomegranate sweetness up front, peach mid-palate, strawberry in the long finish. If too acidic → grind finer or pull to 40 g. If flat → grind coarser.', ], notes: 'Alba as a hot espresso is a showcase for natural Colombian complexity. The Castillo and Caturra varieties produce a fruit-forward shot with real pomegranate depth and peach sweetness. At 91 °C and a 1:2.2 ratio, the extraction is balanced — sweet without being cloying, fruity without being sharp. This is one of the more unusual espresso profiles in the collection. Drink hot and black — the fruit character is the entire point.' }, }; function openModal(id) { const r = recipes[id]; if (!r) return; document.getElementById('m-origin').textContent = r.origin; document.getElementById('m-name').textContent = r.name; document.getElementById('m-roaster').textContent = r.roaster; const paramsHtml = r.params.map(p => `
${p.l}
${p.v}
` ).join(''); const stepsHtml = r.steps.map((s, i) => `
  • ${String(i+1).padStart(2,'0')}${s}
  • ` ).join(''); const tagsHtml = `
    ${r.process} ${r.method} ${r.approved ? '★ Approved' : ''}
    `; document.getElementById('modal-body').innerHTML = ` ${tagsHtml}
    Parameters
    ${paramsHtml}
    Brew Steps
    Tasting Notes

    ${r.notes}

    `; document.getElementById('modal').classList.add('open'); document.body.style.overflow = 'hidden'; } function closeModal(e) { if (e && e.target !== document.getElementById('modal')) return; document.getElementById('modal').classList.remove('open'); document.body.style.overflow = ''; } // Filter logic document.querySelectorAll('.filter-btn').forEach(btn => { btn.addEventListener('click', () => { document.querySelectorAll('.filter-btn').forEach(b => b.classList.remove('active')); btn.classList.add('active'); const f = btn.dataset.filter; document.querySelectorAll('.card').forEach(card => { const show = f === 'all' ? true : f === 'approved' ? card.dataset.approved === 'true' : f === 'espresso' ? card.dataset.type === 'espresso' : f === 'blend' ? card.dataset.process === 'blend' : card.dataset.origin === f || card.dataset.process === f; card.classList.toggle('hidden', !show); }); }); });