Prep
30 min
Cook
75 min
Servings
6
Equipment
sous_vide, heavy skillet
In the endless twilight of the Arctic tundra, where the aurora borealis paints the sky in impossible greens and the snow crunches underfoot with the sound of distant bells, the Sami people have understood a fundamental truth for over a thousand years: the reindeer is not merely sustenance—it is the thread that weaves together survival, spirituality, and the turning of seasons. Every part of the animal is honored, from antler to marrow, in recipes passed down through generations of herders who followed the great migrations across the roof of the world.
The traditional methods of preservation—wind-drying, smoking over juniper fires, fermenting in buried caches—were born of necessity in a land where the growing season lasts mere weeks. Yet these techniques produced flavors of startling complexity: the gaminess of wild meat tempered by aromatic woods, the brightness of foraged berries cutting through rich fat, the earthy depth that only comes from an animal that has grazed on lichen and cloudberries beneath the midnight sun.
This recipe honors that heritage while embracing the precision of modern technique. The sous vide method—that marvel of digital temperature control—achieves what Sami cooks have always sought: meat so tender it yields like butter, yet retains every nuance of flavor. We pair it with the traditional aromatics of the north: juniper berries that echo the forests, cranberries that remember the bog, and root vegetables that survived the permafrost. For those unable to source true reindeer, venison makes an excellent substitute—wild deer that have grazed freely carry something of the same terroir, the same connection to untamed places.
<div class="ingredient-slider-container mb-4 p-4 bg-white rounded-lg shadow-sm border border-gray-100 hover:shadow-md transition-all duration-300"
data-ingredient-index="0">
<!-- Ingredient Display -->
<div class="flex items-center justify-between mb-3">
<div class="ingredient-text flex-1">
<span class="text-sm text-gray-600 font-medium ingredient-amount">
2 lbs
</span>
<span class="text-gray-800 ml-2 ingredient-name">
2-3 lbs reindeer tenderloin (or venison tenderloin)
</span>
</div>
<!-- Quick Reset -->
<button class="reset-ingredient opacity-0 group-hover:opacity-100 p-1 text-gray-400 hover:text-orange-500 transition-all duration-200"
data-ingredient-index="0"
title="Reset to original amount">
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"/>
</svg>
</button>
</div>
<!-- Premium Slider Control -->
<div class="ingredient-slider-track relative h-2 bg-gray-200 rounded-full mb-2 cursor-pointer"
data-ingredient-index="0">
<!-- Progress Track -->
<div class="ingredient-slider-progress absolute left-0 top-0 h-full bg-gradient-to-r from-orange-400 to-orange-500 rounded-full transition-all duration-300 ease-out"
style="width: 20%"></div>
<!-- Slider Handle -->
<div class="ingredient-slider-handle absolute top-1/2 transform -translate-y-1/2 w-5 h-5 bg-white border-2 border-orange-500 rounded-full cursor-grab active:cursor-grabbing shadow-md hover:shadow-lg transition-all duration-200"
style="left: calc(20% - 10px)"
data-ingredient-index="0">
<div class="w-2 h-2 bg-orange-500 rounded-full absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2"></div>
</div>
<!-- Common Value Markers -->
<div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 0%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 6.666666666666667%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 13.333333333333334%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 20%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 26.666666666666668%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 33.33333333333333%"></div>
</div>
<!-- Quick Adjustment Buttons -->
<div class="flex items-center justify-between text-xs text-gray-500">
<div class="flex gap-2">
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="0"
data-scale="0.5">½x</button>
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="0"
data-scale="1.5">1.5x</button>
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="0"
data-scale="2">2x</button>
</div>
<!-- Scale Factor Display -->
<span class="scale-factor ">
Original
</span>
</div>
</div>
<div class="ingredient-slider-container mb-4 p-4 bg-white rounded-lg shadow-sm border border-gray-100 hover:shadow-md transition-all duration-300"
data-ingredient-index="1">
<!-- Ingredient Display -->
<div class="flex items-center justify-between mb-3">
<div class="ingredient-text flex-1">
<span class="text-sm text-gray-600 font-medium ingredient-amount">
2 teaspoons
</span>
<span class="text-gray-800 ml-2 ingredient-name">
kosher salt
</span>
</div>
<!-- Quick Reset -->
<button class="reset-ingredient opacity-0 group-hover:opacity-100 p-1 text-gray-400 hover:text-orange-500 transition-all duration-200"
data-ingredient-index="1"
title="Reset to original amount">
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"/>
</svg>
</button>
</div>
<!-- Premium Slider Control -->
<div class="ingredient-slider-track relative h-2 bg-gray-200 rounded-full mb-2 cursor-pointer"
data-ingredient-index="1">
<!-- Progress Track -->
<div class="ingredient-slider-progress absolute left-0 top-0 h-full bg-gradient-to-r from-orange-400 to-orange-500 rounded-full transition-all duration-300 ease-out"
style="width: 20%"></div>
<!-- Slider Handle -->
<div class="ingredient-slider-handle absolute top-1/2 transform -translate-y-1/2 w-5 h-5 bg-white border-2 border-orange-500 rounded-full cursor-grab active:cursor-grabbing shadow-md hover:shadow-lg transition-all duration-200"
style="left: calc(20% - 10px)"
data-ingredient-index="1">
<div class="w-2 h-2 bg-orange-500 rounded-full absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2"></div>
</div>
<!-- Common Value Markers -->
<div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 0%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 6.666666666666667%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 13.333333333333334%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 20%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 26.666666666666668%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 33.33333333333333%"></div>
</div>
<!-- Quick Adjustment Buttons -->
<div class="flex items-center justify-between text-xs text-gray-500">
<div class="flex gap-2">
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="1"
data-scale="0.5">½x</button>
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="1"
data-scale="1.5">1.5x</button>
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="1"
data-scale="2">2x</button>
</div>
<!-- Scale Factor Display -->
<span class="scale-factor ">
Original
</span>
</div>
</div>
<div class="ingredient-slider-container mb-4 p-4 bg-white rounded-lg shadow-sm border border-gray-100 hover:shadow-md transition-all duration-300"
data-ingredient-index="2">
<!-- Ingredient Display -->
<div class="flex items-center justify-between mb-3">
<div class="ingredient-text flex-1">
<span class="text-sm text-gray-600 font-medium ingredient-amount">
1 teaspoon
</span>
<span class="text-gray-800 ml-2 ingredient-name">
freshly ground black pepper
</span>
</div>
<!-- Quick Reset -->
<button class="reset-ingredient opacity-0 group-hover:opacity-100 p-1 text-gray-400 hover:text-orange-500 transition-all duration-200"
data-ingredient-index="2"
title="Reset to original amount">
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"/>
</svg>
</button>
</div>
<!-- Premium Slider Control -->
<div class="ingredient-slider-track relative h-2 bg-gray-200 rounded-full mb-2 cursor-pointer"
data-ingredient-index="2">
<!-- Progress Track -->
<div class="ingredient-slider-progress absolute left-0 top-0 h-full bg-gradient-to-r from-orange-400 to-orange-500 rounded-full transition-all duration-300 ease-out"
style="width: 20%"></div>
<!-- Slider Handle -->
<div class="ingredient-slider-handle absolute top-1/2 transform -translate-y-1/2 w-5 h-5 bg-white border-2 border-orange-500 rounded-full cursor-grab active:cursor-grabbing shadow-md hover:shadow-lg transition-all duration-200"
style="left: calc(20% - 10px)"
data-ingredient-index="2">
<div class="w-2 h-2 bg-orange-500 rounded-full absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2"></div>
</div>
<!-- Common Value Markers -->
<div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 6.666666666666667%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 20%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 33.33333333333333%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 46.666666666666664%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 60%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 73.33333333333333%"></div>
</div>
<!-- Quick Adjustment Buttons -->
<div class="flex items-center justify-between text-xs text-gray-500">
<div class="flex gap-2">
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="2"
data-scale="0.5">½x</button>
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="2"
data-scale="1.5">1.5x</button>
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="2"
data-scale="2">2x</button>
</div>
<!-- Scale Factor Display -->
<span class="scale-factor ">
Original
</span>
</div>
</div>
<div class="ingredient-slider-container mb-4 p-4 bg-white rounded-lg shadow-sm border border-gray-100 hover:shadow-md transition-all duration-300"
data-ingredient-index="3">
<!-- Ingredient Display -->
<div class="flex items-center justify-between mb-3">
<div class="ingredient-text flex-1">
<span class="text-sm text-gray-600 font-medium ingredient-amount">
2 tablespoons
</span>
<span class="text-gray-800 ml-2 ingredient-name">
juniper berries, lightly crushed
</span>
</div>
<!-- Quick Reset -->
<button class="reset-ingredient opacity-0 group-hover:opacity-100 p-1 text-gray-400 hover:text-orange-500 transition-all duration-200"
data-ingredient-index="3"
title="Reset to original amount">
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"/>
</svg>
</button>
</div>
<!-- Premium Slider Control -->
<div class="ingredient-slider-track relative h-2 bg-gray-200 rounded-full mb-2 cursor-pointer"
data-ingredient-index="3">
<!-- Progress Track -->
<div class="ingredient-slider-progress absolute left-0 top-0 h-full bg-gradient-to-r from-orange-400 to-orange-500 rounded-full transition-all duration-300 ease-out"
style="width: 20%"></div>
<!-- Slider Handle -->
<div class="ingredient-slider-handle absolute top-1/2 transform -translate-y-1/2 w-5 h-5 bg-white border-2 border-orange-500 rounded-full cursor-grab active:cursor-grabbing shadow-md hover:shadow-lg transition-all duration-200"
style="left: calc(20% - 10px)"
data-ingredient-index="3">
<div class="w-2 h-2 bg-orange-500 rounded-full absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2"></div>
</div>
<!-- Common Value Markers -->
<div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 0%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 6.666666666666667%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 13.333333333333334%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 20%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 26.666666666666668%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 33.33333333333333%"></div>
</div>
<!-- Quick Adjustment Buttons -->
<div class="flex items-center justify-between text-xs text-gray-500">
<div class="flex gap-2">
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="3"
data-scale="0.5">½x</button>
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="3"
data-scale="1.5">1.5x</button>
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="3"
data-scale="2">2x</button>
</div>
<!-- Scale Factor Display -->
<span class="scale-factor ">
Original
</span>
</div>
</div>
<div class="ingredient-slider-container mb-4 p-4 bg-white rounded-lg shadow-sm border border-gray-100 hover:shadow-md transition-all duration-300"
data-ingredient-index="4">
<!-- Ingredient Display -->
<div class="flex items-center justify-between mb-3">
<div class="ingredient-text flex-1">
<span class="text-sm text-gray-600 font-medium ingredient-amount">
4 sprigs
</span>
<span class="text-gray-800 ml-2 ingredient-name">
fresh rosemary
</span>
</div>
<!-- Quick Reset -->
<button class="reset-ingredient opacity-0 group-hover:opacity-100 p-1 text-gray-400 hover:text-orange-500 transition-all duration-200"
data-ingredient-index="4"
title="Reset to original amount">
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"/>
</svg>
</button>
</div>
<!-- Premium Slider Control -->
<div class="ingredient-slider-track relative h-2 bg-gray-200 rounded-full mb-2 cursor-pointer"
data-ingredient-index="4">
<!-- Progress Track -->
<div class="ingredient-slider-progress absolute left-0 top-0 h-full bg-gradient-to-r from-orange-400 to-orange-500 rounded-full transition-all duration-300 ease-out"
style="width: 20%"></div>
<!-- Slider Handle -->
<div class="ingredient-slider-handle absolute top-1/2 transform -translate-y-1/2 w-5 h-5 bg-white border-2 border-orange-500 rounded-full cursor-grab active:cursor-grabbing shadow-md hover:shadow-lg transition-all duration-200"
style="left: calc(20% - 10px)"
data-ingredient-index="4">
<div class="w-2 h-2 bg-orange-500 rounded-full absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2"></div>
</div>
<!-- Common Value Markers -->
<div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 0%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 3.3333333333333335%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 6.666666666666667%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 10%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 13.333333333333334%"></div>
</div>
<!-- Quick Adjustment Buttons -->
<div class="flex items-center justify-between text-xs text-gray-500">
<div class="flex gap-2">
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="4"
data-scale="0.5">½x</button>
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="4"
data-scale="1.5">1.5x</button>
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="4"
data-scale="2">2x</button>
</div>
<!-- Scale Factor Display -->
<span class="scale-factor ">
Original
</span>
</div>
</div>
<div class="ingredient-slider-container mb-4 p-4 bg-white rounded-lg shadow-sm border border-gray-100 hover:shadow-md transition-all duration-300"
data-ingredient-index="5">
<!-- Ingredient Display -->
<div class="flex items-center justify-between mb-3">
<div class="ingredient-text flex-1">
<span class="text-sm text-gray-600 font-medium ingredient-amount">
6 cloves
</span>
<span class="text-gray-800 ml-2 ingredient-name">
garlic, smashed
</span>
</div>
<!-- Quick Reset -->
<button class="reset-ingredient opacity-0 group-hover:opacity-100 p-1 text-gray-400 hover:text-orange-500 transition-all duration-200"
data-ingredient-index="5"
title="Reset to original amount">
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"/>
</svg>
</button>
</div>
<!-- Premium Slider Control -->
<div class="ingredient-slider-track relative h-2 bg-gray-200 rounded-full mb-2 cursor-pointer"
data-ingredient-index="5">
<!-- Progress Track -->
<div class="ingredient-slider-progress absolute left-0 top-0 h-full bg-gradient-to-r from-orange-400 to-orange-500 rounded-full transition-all duration-300 ease-out"
style="width: 20%"></div>
<!-- Slider Handle -->
<div class="ingredient-slider-handle absolute top-1/2 transform -translate-y-1/2 w-5 h-5 bg-white border-2 border-orange-500 rounded-full cursor-grab active:cursor-grabbing shadow-md hover:shadow-lg transition-all duration-200"
style="left: calc(20% - 10px)"
data-ingredient-index="5">
<div class="w-2 h-2 bg-orange-500 rounded-full absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2"></div>
</div>
<!-- Common Value Markers -->
<div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 0%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 2.2222222222222214%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 4.444444444444445%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 6.666666666666667%"></div>
</div>
<!-- Quick Adjustment Buttons -->
<div class="flex items-center justify-between text-xs text-gray-500">
<div class="flex gap-2">
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="5"
data-scale="0.5">½x</button>
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="5"
data-scale="1.5">1.5x</button>
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="5"
data-scale="2">2x</button>
</div>
<!-- Scale Factor Display -->
<span class="scale-factor ">
Original
</span>
</div>
</div>
<div class="ingredient-slider-container mb-4 p-4 bg-white rounded-lg shadow-sm border border-gray-100 hover:shadow-md transition-all duration-300"
data-ingredient-index="6">
<!-- Ingredient Display -->
<div class="flex items-center justify-between mb-3">
<div class="ingredient-text flex-1">
<span class="text-sm text-gray-600 font-medium ingredient-amount">
3 tablespoons
</span>
<span class="text-gray-800 ml-2 ingredient-name">
unsalted butter
</span>
</div>
<!-- Quick Reset -->
<button class="reset-ingredient opacity-0 group-hover:opacity-100 p-1 text-gray-400 hover:text-orange-500 transition-all duration-200"
data-ingredient-index="6"
title="Reset to original amount">
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"/>
</svg>
</button>
</div>
<!-- Premium Slider Control -->
<div class="ingredient-slider-track relative h-2 bg-gray-200 rounded-full mb-2 cursor-pointer"
data-ingredient-index="6">
<!-- Progress Track -->
<div class="ingredient-slider-progress absolute left-0 top-0 h-full bg-gradient-to-r from-orange-400 to-orange-500 rounded-full transition-all duration-300 ease-out"
style="width: 20%"></div>
<!-- Slider Handle -->
<div class="ingredient-slider-handle absolute top-1/2 transform -translate-y-1/2 w-5 h-5 bg-white border-2 border-orange-500 rounded-full cursor-grab active:cursor-grabbing shadow-md hover:shadow-lg transition-all duration-200"
style="left: calc(20% - 10px)"
data-ingredient-index="6">
<div class="w-2 h-2 bg-orange-500 rounded-full absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2"></div>
</div>
<!-- Common Value Markers -->
<div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 2.2222222222222214%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 6.666666666666667%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 11.11111111111111%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 15.555555555555555%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 20%"></div>
</div>
<!-- Quick Adjustment Buttons -->
<div class="flex items-center justify-between text-xs text-gray-500">
<div class="flex gap-2">
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="6"
data-scale="0.5">½x</button>
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="6"
data-scale="1.5">1.5x</button>
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="6"
data-scale="2">2x</button>
</div>
<!-- Scale Factor Display -->
<span class="scale-factor ">
Original
</span>
</div>
</div>
<div class="ingredient-slider-container mb-4 p-4 bg-white rounded-lg shadow-sm border border-gray-100 hover:shadow-md transition-all duration-300"
data-ingredient-index="7">
<!-- Ingredient Display -->
<div class="flex items-center justify-between mb-3">
<div class="ingredient-text flex-1">
<span class="text-sm text-gray-600 font-medium ingredient-amount">
1 cup
</span>
<span class="text-gray-800 ml-2 ingredient-name">
red wine
</span>
</div>
<!-- Quick Reset -->
<button class="reset-ingredient opacity-0 group-hover:opacity-100 p-1 text-gray-400 hover:text-orange-500 transition-all duration-200"
data-ingredient-index="7"
title="Reset to original amount">
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"/>
</svg>
</button>
</div>
<!-- Premium Slider Control -->
<div class="ingredient-slider-track relative h-2 bg-gray-200 rounded-full mb-2 cursor-pointer"
data-ingredient-index="7">
<!-- Progress Track -->
<div class="ingredient-slider-progress absolute left-0 top-0 h-full bg-gradient-to-r from-orange-400 to-orange-500 rounded-full transition-all duration-300 ease-out"
style="width: 20%"></div>
<!-- Slider Handle -->
<div class="ingredient-slider-handle absolute top-1/2 transform -translate-y-1/2 w-5 h-5 bg-white border-2 border-orange-500 rounded-full cursor-grab active:cursor-grabbing shadow-md hover:shadow-lg transition-all duration-200"
style="left: calc(20% - 10px)"
data-ingredient-index="7">
<div class="w-2 h-2 bg-orange-500 rounded-full absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2"></div>
</div>
<!-- Common Value Markers -->
<div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 6.666666666666667%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 20%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 33.33333333333333%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 46.666666666666664%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 60%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 73.33333333333333%"></div>
</div>
<!-- Quick Adjustment Buttons -->
<div class="flex items-center justify-between text-xs text-gray-500">
<div class="flex gap-2">
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="7"
data-scale="0.5">½x</button>
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="7"
data-scale="1.5">1.5x</button>
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="7"
data-scale="2">2x</button>
</div>
<!-- Scale Factor Display -->
<span class="scale-factor ">
Original
</span>
</div>
</div>
<div class="ingredient-slider-container mb-4 p-4 bg-white rounded-lg shadow-sm border border-gray-100 hover:shadow-md transition-all duration-300"
data-ingredient-index="8">
<!-- Ingredient Display -->
<div class="flex items-center justify-between mb-3">
<div class="ingredient-text flex-1">
<span class="text-sm text-gray-600 font-medium ingredient-amount">
1 cup
</span>
<span class="text-gray-800 ml-2 ingredient-name">
beef or game stock
</span>
</div>
<!-- Quick Reset -->
<button class="reset-ingredient opacity-0 group-hover:opacity-100 p-1 text-gray-400 hover:text-orange-500 transition-all duration-200"
data-ingredient-index="8"
title="Reset to original amount">
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"/>
</svg>
</button>
</div>
<!-- Premium Slider Control -->
<div class="ingredient-slider-track relative h-2 bg-gray-200 rounded-full mb-2 cursor-pointer"
data-ingredient-index="8">
<!-- Progress Track -->
<div class="ingredient-slider-progress absolute left-0 top-0 h-full bg-gradient-to-r from-orange-400 to-orange-500 rounded-full transition-all duration-300 ease-out"
style="width: 20%"></div>
<!-- Slider Handle -->
<div class="ingredient-slider-handle absolute top-1/2 transform -translate-y-1/2 w-5 h-5 bg-white border-2 border-orange-500 rounded-full cursor-grab active:cursor-grabbing shadow-md hover:shadow-lg transition-all duration-200"
style="left: calc(20% - 10px)"
data-ingredient-index="8">
<div class="w-2 h-2 bg-orange-500 rounded-full absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2"></div>
</div>
<!-- Common Value Markers -->
<div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 6.666666666666667%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 20%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 33.33333333333333%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 46.666666666666664%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 60%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 73.33333333333333%"></div>
</div>
<!-- Quick Adjustment Buttons -->
<div class="flex items-center justify-between text-xs text-gray-500">
<div class="flex gap-2">
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="8"
data-scale="0.5">½x</button>
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="8"
data-scale="1.5">1.5x</button>
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="8"
data-scale="2">2x</button>
</div>
<!-- Scale Factor Display -->
<span class="scale-factor ">
Original
</span>
</div>
</div>
<div class="ingredient-slider-container mb-4 p-4 bg-white rounded-lg shadow-sm border border-gray-100 hover:shadow-md transition-all duration-300"
data-ingredient-index="9">
<!-- Ingredient Display -->
<div class="flex items-center justify-between mb-3">
<div class="ingredient-text flex-1">
<span class="text-sm text-gray-600 font-medium ingredient-amount">
1 tablespoon
</span>
<span class="text-gray-800 ml-2 ingredient-name">
Worcestershire sauce
</span>
</div>
<!-- Quick Reset -->
<button class="reset-ingredient opacity-0 group-hover:opacity-100 p-1 text-gray-400 hover:text-orange-500 transition-all duration-200"
data-ingredient-index="9"
title="Reset to original amount">
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"/>
</svg>
</button>
</div>
<!-- Premium Slider Control -->
<div class="ingredient-slider-track relative h-2 bg-gray-200 rounded-full mb-2 cursor-pointer"
data-ingredient-index="9">
<!-- Progress Track -->
<div class="ingredient-slider-progress absolute left-0 top-0 h-full bg-gradient-to-r from-orange-400 to-orange-500 rounded-full transition-all duration-300 ease-out"
style="width: 20%"></div>
<!-- Slider Handle -->
<div class="ingredient-slider-handle absolute top-1/2 transform -translate-y-1/2 w-5 h-5 bg-white border-2 border-orange-500 rounded-full cursor-grab active:cursor-grabbing shadow-md hover:shadow-lg transition-all duration-200"
style="left: calc(20% - 10px)"
data-ingredient-index="9">
<div class="w-2 h-2 bg-orange-500 rounded-full absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2"></div>
</div>
<!-- Common Value Markers -->
<div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 6.666666666666667%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 20%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 33.33333333333333%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 46.666666666666664%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 60%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 73.33333333333333%"></div>
</div>
<!-- Quick Adjustment Buttons -->
<div class="flex items-center justify-between text-xs text-gray-500">
<div class="flex gap-2">
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="9"
data-scale="0.5">½x</button>
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="9"
data-scale="1.5">1.5x</button>
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="9"
data-scale="2">2x</button>
</div>
<!-- Scale Factor Display -->
<span class="scale-factor ">
Original
</span>
</div>
</div>
<div class="ingredient-slider-container mb-4 p-4 bg-white rounded-lg shadow-sm border border-gray-100 hover:shadow-md transition-all duration-300"
data-ingredient-index="10">
<!-- Ingredient Display -->
<div class="flex items-center justify-between mb-3">
<div class="ingredient-text flex-1">
<span class="text-sm text-gray-600 font-medium ingredient-amount">
1 teaspoon
</span>
<span class="text-gray-800 ml-2 ingredient-name">
smoked paprika
</span>
</div>
<!-- Quick Reset -->
<button class="reset-ingredient opacity-0 group-hover:opacity-100 p-1 text-gray-400 hover:text-orange-500 transition-all duration-200"
data-ingredient-index="10"
title="Reset to original amount">
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"/>
</svg>
</button>
</div>
<!-- Premium Slider Control -->
<div class="ingredient-slider-track relative h-2 bg-gray-200 rounded-full mb-2 cursor-pointer"
data-ingredient-index="10">
<!-- Progress Track -->
<div class="ingredient-slider-progress absolute left-0 top-0 h-full bg-gradient-to-r from-orange-400 to-orange-500 rounded-full transition-all duration-300 ease-out"
style="width: 20%"></div>
<!-- Slider Handle -->
<div class="ingredient-slider-handle absolute top-1/2 transform -translate-y-1/2 w-5 h-5 bg-white border-2 border-orange-500 rounded-full cursor-grab active:cursor-grabbing shadow-md hover:shadow-lg transition-all duration-200"
style="left: calc(20% - 10px)"
data-ingredient-index="10">
<div class="w-2 h-2 bg-orange-500 rounded-full absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2"></div>
</div>
<!-- Common Value Markers -->
<div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 6.666666666666667%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 20%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 33.33333333333333%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 46.666666666666664%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 60%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 73.33333333333333%"></div>
</div>
<!-- Quick Adjustment Buttons -->
<div class="flex items-center justify-between text-xs text-gray-500">
<div class="flex gap-2">
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="10"
data-scale="0.5">½x</button>
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="10"
data-scale="1.5">1.5x</button>
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="10"
data-scale="2">2x</button>
</div>
<!-- Scale Factor Display -->
<span class="scale-factor ">
Original
</span>
</div>
</div>
<div class="ingredient-slider-container mb-4 p-4 bg-white rounded-lg shadow-sm border border-gray-100 hover:shadow-md transition-all duration-300"
data-ingredient-index="11">
<!-- Ingredient Display -->
<div class="flex items-center justify-between mb-3">
<div class="ingredient-text flex-1">
<span class="text-sm text-gray-600 font-medium ingredient-amount">
1 tablespoon
</span>
<span class="text-gray-800 ml-2 ingredient-name">
lingonberry or cranberry jam
</span>
</div>
<!-- Quick Reset -->
<button class="reset-ingredient opacity-0 group-hover:opacity-100 p-1 text-gray-400 hover:text-orange-500 transition-all duration-200"
data-ingredient-index="11"
title="Reset to original amount">
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"/>
</svg>
</button>
</div>
<!-- Premium Slider Control -->
<div class="ingredient-slider-track relative h-2 bg-gray-200 rounded-full mb-2 cursor-pointer"
data-ingredient-index="11">
<!-- Progress Track -->
<div class="ingredient-slider-progress absolute left-0 top-0 h-full bg-gradient-to-r from-orange-400 to-orange-500 rounded-full transition-all duration-300 ease-out"
style="width: 20%"></div>
<!-- Slider Handle -->
<div class="ingredient-slider-handle absolute top-1/2 transform -translate-y-1/2 w-5 h-5 bg-white border-2 border-orange-500 rounded-full cursor-grab active:cursor-grabbing shadow-md hover:shadow-lg transition-all duration-200"
style="left: calc(20% - 10px)"
data-ingredient-index="11">
<div class="w-2 h-2 bg-orange-500 rounded-full absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2"></div>
</div>
<!-- Common Value Markers -->
<div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 6.666666666666667%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 20%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 33.33333333333333%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 46.666666666666664%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 60%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 73.33333333333333%"></div>
</div>
<!-- Quick Adjustment Buttons -->
<div class="flex items-center justify-between text-xs text-gray-500">
<div class="flex gap-2">
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="11"
data-scale="0.5">½x</button>
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="11"
data-scale="1.5">1.5x</button>
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="11"
data-scale="2">2x</button>
</div>
<!-- Scale Factor Display -->
<span class="scale-factor ">
Original
</span>
</div>
</div>
<div class="ingredient-slider-container mb-4 p-4 bg-white rounded-lg shadow-sm border border-gray-100 hover:shadow-md transition-all duration-300"
data-ingredient-index="12">
<!-- Ingredient Display -->
<div class="flex items-center justify-between mb-3">
<div class="ingredient-text flex-1">
<span class="text-sm text-gray-600 font-medium ingredient-amount">
1 teaspoon
</span>
<span class="text-gray-800 ml-2 ingredient-name">
crushed juniper berries
</span>
</div>
<!-- Quick Reset -->
<button class="reset-ingredient opacity-0 group-hover:opacity-100 p-1 text-gray-400 hover:text-orange-500 transition-all duration-200"
data-ingredient-index="12"
title="Reset to original amount">
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"/>
</svg>
</button>
</div>
<!-- Premium Slider Control -->
<div class="ingredient-slider-track relative h-2 bg-gray-200 rounded-full mb-2 cursor-pointer"
data-ingredient-index="12">
<!-- Progress Track -->
<div class="ingredient-slider-progress absolute left-0 top-0 h-full bg-gradient-to-r from-orange-400 to-orange-500 rounded-full transition-all duration-300 ease-out"
style="width: 20%"></div>
<!-- Slider Handle -->
<div class="ingredient-slider-handle absolute top-1/2 transform -translate-y-1/2 w-5 h-5 bg-white border-2 border-orange-500 rounded-full cursor-grab active:cursor-grabbing shadow-md hover:shadow-lg transition-all duration-200"
style="left: calc(20% - 10px)"
data-ingredient-index="12">
<div class="w-2 h-2 bg-orange-500 rounded-full absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2"></div>
</div>
<!-- Common Value Markers -->
<div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 6.666666666666667%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 20%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 33.33333333333333%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 46.666666666666664%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 60%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 73.33333333333333%"></div>
</div>
<!-- Quick Adjustment Buttons -->
<div class="flex items-center justify-between text-xs text-gray-500">
<div class="flex gap-2">
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="12"
data-scale="0.5">½x</button>
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="12"
data-scale="1.5">1.5x</button>
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="12"
data-scale="2">2x</button>
</div>
<!-- Scale Factor Display -->
<span class="scale-factor ">
Original
</span>
</div>
</div>
<div class="ingredient-slider-container mb-4 p-4 bg-white rounded-lg shadow-sm border border-gray-100 hover:shadow-md transition-all duration-300"
data-ingredient-index="13">
<!-- Ingredient Display -->
<div class="flex items-center justify-between mb-3">
<div class="ingredient-text flex-1">
<span class="text-sm text-gray-600 font-medium ingredient-amount">
1 cup
</span>
<span class="text-gray-800 ml-2 ingredient-name">
fresh cranberries
</span>
</div>
<!-- Quick Reset -->
<button class="reset-ingredient opacity-0 group-hover:opacity-100 p-1 text-gray-400 hover:text-orange-500 transition-all duration-200"
data-ingredient-index="13"
title="Reset to original amount">
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"/>
</svg>
</button>
</div>
<!-- Premium Slider Control -->
<div class="ingredient-slider-track relative h-2 bg-gray-200 rounded-full mb-2 cursor-pointer"
data-ingredient-index="13">
<!-- Progress Track -->
<div class="ingredient-slider-progress absolute left-0 top-0 h-full bg-gradient-to-r from-orange-400 to-orange-500 rounded-full transition-all duration-300 ease-out"
style="width: 20%"></div>
<!-- Slider Handle -->
<div class="ingredient-slider-handle absolute top-1/2 transform -translate-y-1/2 w-5 h-5 bg-white border-2 border-orange-500 rounded-full cursor-grab active:cursor-grabbing shadow-md hover:shadow-lg transition-all duration-200"
style="left: calc(20% - 10px)"
data-ingredient-index="13">
<div class="w-2 h-2 bg-orange-500 rounded-full absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2"></div>
</div>
<!-- Common Value Markers -->
<div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 6.666666666666667%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 20%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 33.33333333333333%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 46.666666666666664%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 60%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 73.33333333333333%"></div>
</div>
<!-- Quick Adjustment Buttons -->
<div class="flex items-center justify-between text-xs text-gray-500">
<div class="flex gap-2">
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="13"
data-scale="0.5">½x</button>
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="13"
data-scale="1.5">1.5x</button>
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="13"
data-scale="2">2x</button>
</div>
<!-- Scale Factor Display -->
<span class="scale-factor ">
Original
</span>
</div>
</div>
<div class="ingredient-slider-container mb-4 p-4 bg-white rounded-lg shadow-sm border border-gray-100 hover:shadow-md transition-all duration-300"
data-ingredient-index="14">
<!-- Ingredient Display -->
<div class="flex items-center justify-between mb-3">
<div class="ingredient-text flex-1">
<span class="text-sm text-gray-600 font-medium ingredient-amount">
2 tablespoons
</span>
<span class="text-gray-800 ml-2 ingredient-name">
balsamic vinegar
</span>
</div>
<!-- Quick Reset -->
<button class="reset-ingredient opacity-0 group-hover:opacity-100 p-1 text-gray-400 hover:text-orange-500 transition-all duration-200"
data-ingredient-index="14"
title="Reset to original amount">
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"/>
</svg>
</button>
</div>
<!-- Premium Slider Control -->
<div class="ingredient-slider-track relative h-2 bg-gray-200 rounded-full mb-2 cursor-pointer"
data-ingredient-index="14">
<!-- Progress Track -->
<div class="ingredient-slider-progress absolute left-0 top-0 h-full bg-gradient-to-r from-orange-400 to-orange-500 rounded-full transition-all duration-300 ease-out"
style="width: 20%"></div>
<!-- Slider Handle -->
<div class="ingredient-slider-handle absolute top-1/2 transform -translate-y-1/2 w-5 h-5 bg-white border-2 border-orange-500 rounded-full cursor-grab active:cursor-grabbing shadow-md hover:shadow-lg transition-all duration-200"
style="left: calc(20% - 10px)"
data-ingredient-index="14">
<div class="w-2 h-2 bg-orange-500 rounded-full absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2"></div>
</div>
<!-- Common Value Markers -->
<div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 0%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 6.666666666666667%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 13.333333333333334%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 20%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 26.666666666666668%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 33.33333333333333%"></div>
</div>
<!-- Quick Adjustment Buttons -->
<div class="flex items-center justify-between text-xs text-gray-500">
<div class="flex gap-2">
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="14"
data-scale="0.5">½x</button>
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="14"
data-scale="1.5">1.5x</button>
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="14"
data-scale="2">2x</button>
</div>
<!-- Scale Factor Display -->
<span class="scale-factor ">
Original
</span>
</div>
</div>
<div class="ingredient-slider-container mb-4 p-4 bg-white rounded-lg shadow-sm border border-gray-100 hover:shadow-md transition-all duration-300"
data-ingredient-index="15">
<!-- Ingredient Display -->
<div class="flex items-center justify-between mb-3">
<div class="ingredient-text flex-1">
<span class="text-sm text-gray-600 font-medium ingredient-amount">
2 tablespoons
</span>
<span class="text-gray-800 ml-2 ingredient-name">
honey
</span>
</div>
<!-- Quick Reset -->
<button class="reset-ingredient opacity-0 group-hover:opacity-100 p-1 text-gray-400 hover:text-orange-500 transition-all duration-200"
data-ingredient-index="15"
title="Reset to original amount">
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"/>
</svg>
</button>
</div>
<!-- Premium Slider Control -->
<div class="ingredient-slider-track relative h-2 bg-gray-200 rounded-full mb-2 cursor-pointer"
data-ingredient-index="15">
<!-- Progress Track -->
<div class="ingredient-slider-progress absolute left-0 top-0 h-full bg-gradient-to-r from-orange-400 to-orange-500 rounded-full transition-all duration-300 ease-out"
style="width: 20%"></div>
<!-- Slider Handle -->
<div class="ingredient-slider-handle absolute top-1/2 transform -translate-y-1/2 w-5 h-5 bg-white border-2 border-orange-500 rounded-full cursor-grab active:cursor-grabbing shadow-md hover:shadow-lg transition-all duration-200"
style="left: calc(20% - 10px)"
data-ingredient-index="15">
<div class="w-2 h-2 bg-orange-500 rounded-full absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2"></div>
</div>
<!-- Common Value Markers -->
<div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 0%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 6.666666666666667%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 13.333333333333334%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 20%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 26.666666666666668%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 33.33333333333333%"></div>
</div>
<!-- Quick Adjustment Buttons -->
<div class="flex items-center justify-between text-xs text-gray-500">
<div class="flex gap-2">
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="15"
data-scale="0.5">½x</button>
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="15"
data-scale="1.5">1.5x</button>
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="15"
data-scale="2">2x</button>
</div>
<!-- Scale Factor Display -->
<span class="scale-factor ">
Original
</span>
</div>
</div>
<div class="ingredient-slider-container mb-4 p-4 bg-white rounded-lg shadow-sm border border-gray-100 hover:shadow-md transition-all duration-300"
data-ingredient-index="16">
<!-- Ingredient Display -->
<div class="flex items-center justify-between mb-3">
<div class="ingredient-text flex-1">
<span class="text-sm text-gray-600 font-medium ingredient-amount">
2 lbs
</span>
<span class="text-gray-800 ml-2 ingredient-name">
Yukon potatoes, unpeeled
</span>
</div>
<!-- Quick Reset -->
<button class="reset-ingredient opacity-0 group-hover:opacity-100 p-1 text-gray-400 hover:text-orange-500 transition-all duration-200"
data-ingredient-index="16"
title="Reset to original amount">
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"/>
</svg>
</button>
</div>
<!-- Premium Slider Control -->
<div class="ingredient-slider-track relative h-2 bg-gray-200 rounded-full mb-2 cursor-pointer"
data-ingredient-index="16">
<!-- Progress Track -->
<div class="ingredient-slider-progress absolute left-0 top-0 h-full bg-gradient-to-r from-orange-400 to-orange-500 rounded-full transition-all duration-300 ease-out"
style="width: 20%"></div>
<!-- Slider Handle -->
<div class="ingredient-slider-handle absolute top-1/2 transform -translate-y-1/2 w-5 h-5 bg-white border-2 border-orange-500 rounded-full cursor-grab active:cursor-grabbing shadow-md hover:shadow-lg transition-all duration-200"
style="left: calc(20% - 10px)"
data-ingredient-index="16">
<div class="w-2 h-2 bg-orange-500 rounded-full absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2"></div>
</div>
<!-- Common Value Markers -->
<div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 0%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 6.666666666666667%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 13.333333333333334%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 20%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 26.666666666666668%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 33.33333333333333%"></div>
</div>
<!-- Quick Adjustment Buttons -->
<div class="flex items-center justify-between text-xs text-gray-500">
<div class="flex gap-2">
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="16"
data-scale="0.5">½x</button>
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="16"
data-scale="1.5">1.5x</button>
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="16"
data-scale="2">2x</button>
</div>
<!-- Scale Factor Display -->
<span class="scale-factor ">
Original
</span>
</div>
</div>
<div class="ingredient-slider-container mb-4 p-4 bg-white rounded-lg shadow-sm border border-gray-100 hover:shadow-md transition-all duration-300"
data-ingredient-index="17">
<!-- Ingredient Display -->
<div class="flex items-center justify-between mb-3">
<div class="ingredient-text flex-1">
<span class="text-sm text-gray-600 font-medium ingredient-amount">
4 tablespoons
</span>
<span class="text-gray-800 ml-2 ingredient-name">
unsalted butter
</span>
</div>
<!-- Quick Reset -->
<button class="reset-ingredient opacity-0 group-hover:opacity-100 p-1 text-gray-400 hover:text-orange-500 transition-all duration-200"
data-ingredient-index="17"
title="Reset to original amount">
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"/>
</svg>
</button>
</div>
<!-- Premium Slider Control -->
<div class="ingredient-slider-track relative h-2 bg-gray-200 rounded-full mb-2 cursor-pointer"
data-ingredient-index="17">
<!-- Progress Track -->
<div class="ingredient-slider-progress absolute left-0 top-0 h-full bg-gradient-to-r from-orange-400 to-orange-500 rounded-full transition-all duration-300 ease-out"
style="width: 20%"></div>
<!-- Slider Handle -->
<div class="ingredient-slider-handle absolute top-1/2 transform -translate-y-1/2 w-5 h-5 bg-white border-2 border-orange-500 rounded-full cursor-grab active:cursor-grabbing shadow-md hover:shadow-lg transition-all duration-200"
style="left: calc(20% - 10px)"
data-ingredient-index="17">
<div class="w-2 h-2 bg-orange-500 rounded-full absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2"></div>
</div>
<!-- Common Value Markers -->
<div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 0%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 3.3333333333333335%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 6.666666666666667%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 10%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 13.333333333333334%"></div>
</div>
<!-- Quick Adjustment Buttons -->
<div class="flex items-center justify-between text-xs text-gray-500">
<div class="flex gap-2">
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="17"
data-scale="0.5">½x</button>
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="17"
data-scale="1.5">1.5x</button>
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="17"
data-scale="2">2x</button>
</div>
<!-- Scale Factor Display -->
<span class="scale-factor ">
Original
</span>
</div>
</div>
<div class="ingredient-slider-container mb-4 p-4 bg-white rounded-lg shadow-sm border border-gray-100 hover:shadow-md transition-all duration-300"
data-ingredient-index="18">
<!-- Ingredient Display -->
<div class="flex items-center justify-between mb-3">
<div class="ingredient-text flex-1">
<span class="text-sm text-gray-600 font-medium ingredient-amount">
1 cup
</span>
<span class="text-gray-800 ml-2 ingredient-name">
1/2 cup warm cream
</span>
</div>
<!-- Quick Reset -->
<button class="reset-ingredient opacity-0 group-hover:opacity-100 p-1 text-gray-400 hover:text-orange-500 transition-all duration-200"
data-ingredient-index="18"
title="Reset to original amount">
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"/>
</svg>
</button>
</div>
<!-- Premium Slider Control -->
<div class="ingredient-slider-track relative h-2 bg-gray-200 rounded-full mb-2 cursor-pointer"
data-ingredient-index="18">
<!-- Progress Track -->
<div class="ingredient-slider-progress absolute left-0 top-0 h-full bg-gradient-to-r from-orange-400 to-orange-500 rounded-full transition-all duration-300 ease-out"
style="width: 20%"></div>
<!-- Slider Handle -->
<div class="ingredient-slider-handle absolute top-1/2 transform -translate-y-1/2 w-5 h-5 bg-white border-2 border-orange-500 rounded-full cursor-grab active:cursor-grabbing shadow-md hover:shadow-lg transition-all duration-200"
style="left: calc(20% - 10px)"
data-ingredient-index="18">
<div class="w-2 h-2 bg-orange-500 rounded-full absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2"></div>
</div>
<!-- Common Value Markers -->
<div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 6.666666666666667%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 20%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 33.33333333333333%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 46.666666666666664%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 60%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 73.33333333333333%"></div>
</div>
<!-- Quick Adjustment Buttons -->
<div class="flex items-center justify-between text-xs text-gray-500">
<div class="flex gap-2">
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="18"
data-scale="0.5">½x</button>
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="18"
data-scale="1.5">1.5x</button>
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="18"
data-scale="2">2x</button>
</div>
<!-- Scale Factor Display -->
<span class="scale-factor ">
Original
</span>
</div>
</div>
<div class="ingredient-slider-container mb-4 p-4 bg-white rounded-lg shadow-sm border border-gray-100 hover:shadow-md transition-all duration-300"
data-ingredient-index="19">
<!-- Ingredient Display -->
<div class="flex items-center justify-between mb-3">
<div class="ingredient-text flex-1">
<span class="text-sm text-gray-600 font-medium ingredient-amount">
1 tablespoon
</span>
<span class="text-gray-800 ml-2 ingredient-name">
Dijon mustard
</span>
</div>
<!-- Quick Reset -->
<button class="reset-ingredient opacity-0 group-hover:opacity-100 p-1 text-gray-400 hover:text-orange-500 transition-all duration-200"
data-ingredient-index="19"
title="Reset to original amount">
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"/>
</svg>
</button>
</div>
<!-- Premium Slider Control -->
<div class="ingredient-slider-track relative h-2 bg-gray-200 rounded-full mb-2 cursor-pointer"
data-ingredient-index="19">
<!-- Progress Track -->
<div class="ingredient-slider-progress absolute left-0 top-0 h-full bg-gradient-to-r from-orange-400 to-orange-500 rounded-full transition-all duration-300 ease-out"
style="width: 20%"></div>
<!-- Slider Handle -->
<div class="ingredient-slider-handle absolute top-1/2 transform -translate-y-1/2 w-5 h-5 bg-white border-2 border-orange-500 rounded-full cursor-grab active:cursor-grabbing shadow-md hover:shadow-lg transition-all duration-200"
style="left: calc(20% - 10px)"
data-ingredient-index="19">
<div class="w-2 h-2 bg-orange-500 rounded-full absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2"></div>
</div>
<!-- Common Value Markers -->
<div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 6.666666666666667%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 20%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 33.33333333333333%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 46.666666666666664%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 60%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 73.33333333333333%"></div>
</div>
<!-- Quick Adjustment Buttons -->
<div class="flex items-center justify-between text-xs text-gray-500">
<div class="flex gap-2">
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="19"
data-scale="0.5">½x</button>
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="19"
data-scale="1.5">1.5x</button>
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="19"
data-scale="2">2x</button>
</div>
<!-- Scale Factor Display -->
<span class="scale-factor ">
Original
</span>
</div>
</div>
<div class="ingredient-slider-container mb-4 p-4 bg-white rounded-lg shadow-sm border border-gray-100 hover:shadow-md transition-all duration-300"
data-ingredient-index="20">
<!-- Ingredient Display -->
<div class="flex items-center justify-between mb-3">
<div class="ingredient-text flex-1">
<span class="text-sm text-gray-600 font-medium ingredient-amount">
6 large
</span>
<span class="text-gray-800 ml-2 ingredient-name">
carrots, cut in chunks
</span>
</div>
<!-- Quick Reset -->
<button class="reset-ingredient opacity-0 group-hover:opacity-100 p-1 text-gray-400 hover:text-orange-500 transition-all duration-200"
data-ingredient-index="20"
title="Reset to original amount">
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"/>
</svg>
</button>
</div>
<!-- Premium Slider Control -->
<div class="ingredient-slider-track relative h-2 bg-gray-200 rounded-full mb-2 cursor-pointer"
data-ingredient-index="20">
<!-- Progress Track -->
<div class="ingredient-slider-progress absolute left-0 top-0 h-full bg-gradient-to-r from-orange-400 to-orange-500 rounded-full transition-all duration-300 ease-out"
style="width: 20%"></div>
<!-- Slider Handle -->
<div class="ingredient-slider-handle absolute top-1/2 transform -translate-y-1/2 w-5 h-5 bg-white border-2 border-orange-500 rounded-full cursor-grab active:cursor-grabbing shadow-md hover:shadow-lg transition-all duration-200"
style="left: calc(20% - 10px)"
data-ingredient-index="20">
<div class="w-2 h-2 bg-orange-500 rounded-full absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2"></div>
</div>
<!-- Common Value Markers -->
<div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 0%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 2.2222222222222214%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 4.444444444444445%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 6.666666666666667%"></div>
</div>
<!-- Quick Adjustment Buttons -->
<div class="flex items-center justify-between text-xs text-gray-500">
<div class="flex gap-2">
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="20"
data-scale="0.5">½x</button>
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="20"
data-scale="1.5">1.5x</button>
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="20"
data-scale="2">2x</button>
</div>
<!-- Scale Factor Display -->
<span class="scale-factor ">
Original
</span>
</div>
</div>
<div class="ingredient-slider-container mb-4 p-4 bg-white rounded-lg shadow-sm border border-gray-100 hover:shadow-md transition-all duration-300"
data-ingredient-index="21">
<!-- Ingredient Display -->
<div class="flex items-center justify-between mb-3">
<div class="ingredient-text flex-1">
<span class="text-sm text-gray-600 font-medium ingredient-amount">
4 parsnips
</span>
<span class="text-gray-800 ml-2 ingredient-name">
parsnips, cut in chunks
</span>
</div>
<!-- Quick Reset -->
<button class="reset-ingredient opacity-0 group-hover:opacity-100 p-1 text-gray-400 hover:text-orange-500 transition-all duration-200"
data-ingredient-index="21"
title="Reset to original amount">
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"/>
</svg>
</button>
</div>
<!-- Premium Slider Control -->
<div class="ingredient-slider-track relative h-2 bg-gray-200 rounded-full mb-2 cursor-pointer"
data-ingredient-index="21">
<!-- Progress Track -->
<div class="ingredient-slider-progress absolute left-0 top-0 h-full bg-gradient-to-r from-orange-400 to-orange-500 rounded-full transition-all duration-300 ease-out"
style="width: 20%"></div>
<!-- Slider Handle -->
<div class="ingredient-slider-handle absolute top-1/2 transform -translate-y-1/2 w-5 h-5 bg-white border-2 border-orange-500 rounded-full cursor-grab active:cursor-grabbing shadow-md hover:shadow-lg transition-all duration-200"
style="left: calc(20% - 10px)"
data-ingredient-index="21">
<div class="w-2 h-2 bg-orange-500 rounded-full absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2"></div>
</div>
<!-- Common Value Markers -->
<div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 0%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 3.3333333333333335%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 6.666666666666667%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 10%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 13.333333333333334%"></div>
</div>
<!-- Quick Adjustment Buttons -->
<div class="flex items-center justify-between text-xs text-gray-500">
<div class="flex gap-2">
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="21"
data-scale="0.5">½x</button>
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="21"
data-scale="1.5">1.5x</button>
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="21"
data-scale="2">2x</button>
</div>
<!-- Scale Factor Display -->
<span class="scale-factor ">
Original
</span>
</div>
</div>
<div class="ingredient-slider-container mb-4 p-4 bg-white rounded-lg shadow-sm border border-gray-100 hover:shadow-md transition-all duration-300"
data-ingredient-index="22">
<!-- Ingredient Display -->
<div class="flex items-center justify-between mb-3">
<div class="ingredient-text flex-1">
<span class="text-sm text-gray-600 font-medium ingredient-amount">
2 tablespoons
</span>
<span class="text-gray-800 ml-2 ingredient-name">
olive oil
</span>
</div>
<!-- Quick Reset -->
<button class="reset-ingredient opacity-0 group-hover:opacity-100 p-1 text-gray-400 hover:text-orange-500 transition-all duration-200"
data-ingredient-index="22"
title="Reset to original amount">
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"/>
</svg>
</button>
</div>
<!-- Premium Slider Control -->
<div class="ingredient-slider-track relative h-2 bg-gray-200 rounded-full mb-2 cursor-pointer"
data-ingredient-index="22">
<!-- Progress Track -->
<div class="ingredient-slider-progress absolute left-0 top-0 h-full bg-gradient-to-r from-orange-400 to-orange-500 rounded-full transition-all duration-300 ease-out"
style="width: 20%"></div>
<!-- Slider Handle -->
<div class="ingredient-slider-handle absolute top-1/2 transform -translate-y-1/2 w-5 h-5 bg-white border-2 border-orange-500 rounded-full cursor-grab active:cursor-grabbing shadow-md hover:shadow-lg transition-all duration-200"
style="left: calc(20% - 10px)"
data-ingredient-index="22">
<div class="w-2 h-2 bg-orange-500 rounded-full absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2"></div>
</div>
<!-- Common Value Markers -->
<div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 0%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 6.666666666666667%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 13.333333333333334%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 20%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 26.666666666666668%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 33.33333333333333%"></div>
</div>
<!-- Quick Adjustment Buttons -->
<div class="flex items-center justify-between text-xs text-gray-500">
<div class="flex gap-2">
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="22"
data-scale="0.5">½x</button>
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="22"
data-scale="1.5">1.5x</button>
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="22"
data-scale="2">2x</button>
</div>
<!-- Scale Factor Display -->
<span class="scale-factor ">
Original
</span>
</div>
</div>
<div class="ingredient-slider-container mb-4 p-4 bg-white rounded-lg shadow-sm border border-gray-100 hover:shadow-md transition-all duration-300"
data-ingredient-index="23">
<!-- Ingredient Display -->
<div class="flex items-center justify-between mb-3">
<div class="ingredient-text flex-1">
<span class="text-sm text-gray-600 font-medium ingredient-amount">
3 medium
</span>
<span class="text-gray-800 ml-2 ingredient-name">
carrots, julienned
</span>
</div>
<!-- Quick Reset -->
<button class="reset-ingredient opacity-0 group-hover:opacity-100 p-1 text-gray-400 hover:text-orange-500 transition-all duration-200"
data-ingredient-index="23"
title="Reset to original amount">
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"/>
</svg>
</button>
</div>
<!-- Premium Slider Control -->
<div class="ingredient-slider-track relative h-2 bg-gray-200 rounded-full mb-2 cursor-pointer"
data-ingredient-index="23">
<!-- Progress Track -->
<div class="ingredient-slider-progress absolute left-0 top-0 h-full bg-gradient-to-r from-orange-400 to-orange-500 rounded-full transition-all duration-300 ease-out"
style="width: 20%"></div>
<!-- Slider Handle -->
<div class="ingredient-slider-handle absolute top-1/2 transform -translate-y-1/2 w-5 h-5 bg-white border-2 border-orange-500 rounded-full cursor-grab active:cursor-grabbing shadow-md hover:shadow-lg transition-all duration-200"
style="left: calc(20% - 10px)"
data-ingredient-index="23">
<div class="w-2 h-2 bg-orange-500 rounded-full absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2"></div>
</div>
<!-- Common Value Markers -->
<div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 2.2222222222222214%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 6.666666666666667%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 11.11111111111111%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 15.555555555555555%"></div><div class="absolute top-0 h-2 w-0.5 bg-gray-300 opacity-50" style="left: 20%"></div>
</div>
<!-- Quick Adjustment Buttons -->
<div class="flex items-center justify-between text-xs text-gray-500">
<div class="flex gap-2">
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="23"
data-scale="0.5">½x</button>
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="23"
data-scale="1.5">1.5x</button>
<button class="quick-adjust px-2 py-1 rounded text-xs hover:bg-orange-50 hover:text-orange-600 transition-colors duration-200"
data-ingredient-index="23"
data-scale="2">2x</button>
</div>
<!-- Scale Factor Display -->
<span class="scale-factor ">
Original
</span>
</div>
</div>
1
Season the meat
Pat the reindeer tenderloin dry and season generously with salt and black pepper. In the tradition of Sami herders, who would pack meat with wild herbs before smoking, rub the crushed juniper berries into the flesh alongside the rosemary and smashed garlic. Place in the refrigerator to cure for at least 2 hours, or overnight—the salt will draw out moisture and concentrate flavors, just as the Arctic wind does.
Juniper berries should be lightly crushed—just enough to release their oils without creating powder.
2
Prepare the sous vide bath
Set your sous vide circulator to 54°C (129°F)—the precise temperature that will transform tough fibers into silk while preserving the meat's essential wildness. This temperature, discovered through modern science, achieves what Sami cooks intuited through generations: perfect tenderness without sacrificing the character of the animal.
If you don't have a sous vide setup, this can be done using a large pot with a thermometer, maintaining steady temperature.
3
Seal and cook
Remove the herbs and garlic from the meat (they've done their aromatic work). Vacuum seal the tenderloin with the butter—this will baste the meat as it cooks, creating the rich, unctuous texture that made reindeer fat so prized among Arctic peoples. Cook for 60-75 minutes, depending on thickness. The meat will emerge perfectly uniform in doneness, pink from edge to edge like the endless sunset of the polar summer.
If you don't have a vacuum sealer, use the displacement method with a zip-lock bag.
4
Make the red wine jus
While the meat cooks, combine red wine, stock, Worcestershire, smoked paprika, berry jam, and juniper berries in a saucepan. Simmer until reduced by half—about 20 minutes. The sauce should coat the back of a spoon and carry the deep, complex flavors of the northern forests. Strain and keep warm.
A good Northern Rhône Syrah or Barbera works beautifully here—wines with the earthiness to match wild game.
5
Prepare the cranberry-balsamic sauce
In a small saucepan, combine cranberries, balsamic vinegar, and honey. Cook over medium heat until the berries begin to burst—about 5-7 minutes. The tartness of the cranberries provides the acidic counterpoint that makes rich meat sing, just as cloudberries once did for the Sami.
Leave some berries whole for texture—the sauce should be chunky, not smooth.
6
Make the potato purée
Boil unpeeled potatoes until tender—keeping the skins honors the rustic tradition where nothing was wasted. Drain and pass through a ricer or food mill, skins and all. Fold in butter, warm cream, and Dijon mustard. The result should be creamy but textured, earthy but refined—like the landscape itself.
Don't use a blender or food processor—they'll make the potatoes gluey. A simple masher works if you don't have a ricer.
7
Roast the root vegetables
Toss carrot and parsnip chunks with olive oil, salt, and pepper. Roast at 400°F for 25-30 minutes until caramelized and tender. These represent the roots that sustained northern peoples through endless winters—sweet, earthy, and deeply nourishing.
Cut vegetables uniformly for even cooking—they should be golden and slightly crispy at the edges.
8
Quick-cook the julienned carrots
In the last few minutes before serving, quickly sauté the julienned carrots in a hot pan with a touch of butter. They should retain some bite—this provides textural contrast against the silky meat and creamy potatoes.
These carrots should be tender-crisp, cooked for no more than 2-3 minutes.
9
Sear and rest
Remove the tenderloin from its bag and pat completely dry. Heat a cast-iron skillet until smoking. Sear the meat for 30-45 seconds per side, adding fresh rosemary and garlic to the pan—they'll sputter and perfume the meat with their oils. The contrast between the perfectly cooked interior and the caramelized crust mirrors the Sami tradition of finishing smoked meat over an open flame.
The meat is already cooked through—you're only creating the Maillard reaction for flavor and texture.
10
Slice and serve
Let the meat rest for 5 minutes, then slice against the grain into medallions. Arrange on warmed plates with dollops of rustic potato purée, both roasted and quick-cooked vegetables, and generous spoonfuls of both sauces. Each plate should tell the story of the Arctic: the richness of preserved meat, the brightness of foraged berries, the earthiness of roots dug from permafrost.
Slice with a sharp knife in one smooth motion—don't saw back and forth or you'll tear the tender fibers.
Reset Progress
Mark All Complete