{{-- /fermentos/{slug} — la ficha del fermento (docs/paginas/ficha-fermento.md). Dos trabajos, en este orden: la mejor página en español sobre cómo hacer este fermento, y después la puerta a formular una tanda. Voz Fermenty — el mentor no aparece aquí: no hay tanda de la que hablar. --}} @extends('layouts.web') {{-- Todo el PHP de la vista en UN solo bloque: mezclar @php(...) en línea con bloques @php…@endphp rompe el compilador de Blade (se traga lo intermedio). --}} @php $app = rtrim((string) config('app.mobile_url'), '/'); $nombre = mb_strtolower($guide->name); $temp = $guide->ficha['tempIdeal'] ?? null; @endphp @section('seo') @endsection @push('head') @php $ldRecipe = array_filter([ '@context' => 'https://schema.org', '@type' => 'Recipe', 'name' => 'Cómo hacer ' . $nombre . ' en casa', 'description' => $guide->intro, 'image' => $guide->cover_image_url, 'recipeCategory' => $guide->category?->name, 'recipeYield' => $guide->base_yield_value ? rtrim(rtrim(number_format((float) $guide->base_yield_value, 3, '.', ''), '0'), '.') . ' ' . $guide->base_yield_unit : null, // El esquema espera una duración, no una horquilla: se usa el MÍNIMO y // el rango se explica en el texto visible (nunca inventar un valor exacto). 'cookTime' => $guide->duration_min_days ? 'P' . $guide->duration_min_days . 'D' : null, 'recipeIngredient' => $ingredientes->map(fn ($i) => trim( rtrim(rtrim((string) $i->quantity, '0'), '.') . ' ' . ($i->unit === 'unit' ? 'ud.' : $i->unit) . ' de ' . $i->name ))->values()->all() ?: null, 'recipeInstructions' => $guide->steps->sortBy('step_number')->map(fn ($s) => [ '@type' => 'HowToStep', 'name' => $s->title, 'text' => trim(($s->description ? $s->description . ' ' : '') . $s->actions->pluck('description')->implode(' ')), ])->values()->all() ?: null, // Sin nutrition ni aggregateRating (Voz.md §7 bis; sin valoraciones reales). ], fn ($v) => $v !== null && $v !== ''); $ldCrumbs = ['@context' => 'https://schema.org', '@type' => 'BreadcrumbList', 'itemListElement' => array_values(array_filter([ ['@type' => 'ListItem', 'position' => 1, 'name' => 'Inicio', 'item' => url('/')], ['@type' => 'ListItem', 'position' => 2, 'name' => 'Fermentos', 'item' => ruta('fermentos.index')], $guide->category ? ['@type' => 'ListItem', 'position' => 3, 'name' => $guide->category->name, 'item' => ruta('fermentos.show', $guide->category->slug)] : null, ['@type' => 'ListItem', 'position' => $guide->category ? 4 : 3, 'name' => $guide->name, 'item' => ruta('fermentos.show', $guide->slug)], ]))]; @endphp @endpush @section('content')
Inicio › Fermentos @if($guide->category) › {{ $guide->category->name }}@endif › {{ $guide->name }}

Cómo hacer {{ $nombre }} en casa

{{ $guide->intro }}

@if($guide->horquilla())Horquilla {{ $guide->horquilla() }}@endif @if($guide->difficulty_level)Dificultad {{ mb_strtolower(__('general.difficulty.' . $guide->difficulty_level)) }}@endif @if($guide->category){{ $guide->category->name }}@endif @if($temp)Temperatura {{ $temp['min'] }}-{{ $temp['max'] }} °C@endif

Es la horquilla general. Tu ventana depende de la temperatura de tu cocina — crea una tanda y la calculamos con la tuya.

{{-- La guía y su afinador se enlazan en las dos direcciones: contenido y herramienta del mismo fermento reforzándose (Afinador_Kefir_Web.md §1 bis). Dato en config/web.php: el tercer afinador es una línea allí. --}} @if($rutaAfinador = config('web.afinadores.' . $guide->slug))

¿Quieres empezar hoy? Calcula tu tanda con el afinador: cantidades y horas con la temperatura de tu casa, gratis y sin registro.

@endif @if($guide->cover_image_url) {{-- Sin lazy: este cover es (o puede ser) el LCP de la ficha. El aspect-ratio lo fija el CSS para que la caja reserve sitio (CLS, fase 5). --}}
{{ $guide->name }}
@endif
{{-- 2.2 Qué necesitas --}} @if($ingredientes->isNotEmpty())

Qué necesitas

@if($guide->base_yield_value)

Cantidades para {{ rtrim(rtrim(number_format((float) $guide->base_yield_value, 3, ',', '.'), '0'), ',') }} {{ $guide->base_yield_unit }}. Al crear la tanda se recalculan para tu volumen.

@endif
    @foreach($ingredientes as $ing)
  • {{ $ing->name }}@if($ing->papel){{ $ing->papel }}@endif {{ rtrim(rtrim((string) $ing->quantity, '0'), '.') }} {{ $ing->unit === 'unit' ? 'ud.' : $ing->unit }}
  • @endforeach
@endif {{-- 2.3 El proceso --}} @if($guide->steps->isNotEmpty())

El proceso

@foreach($guide->steps->sortBy('step_number') as $paso)
{{ $paso->step_number }}

{{ $paso->title }}@if($paso->is_optional)Opcional@endif

@if($paso->description)

{{ $paso->description }}

@endif @if($paso->actions->isNotEmpty())
    @foreach($paso->actions as $a)
  • {{ $a->description }}
  • @endforeach
@endif {{-- Sin consejos de paso: su ventana es la tanda, y es Pro (Planes.md §2) --}}
@endforeach @endif {{-- 2.4 Cuándo está en su punto --}}

¿Cuántos días?

La horquilla general de {{ $nombre }} son {{ $guide->duration_min_days }}-{{ $guide->duration_max_days }} días, pero eso es una media de cocinas ajenas. Cada 10 °C de más, la fermentación va al doble de velocidad: la misma tanda puede entrar en su punto días antes en agosto que en enero.

El punto no lo decide el calendario, lo decides tú catando. Fermenty calcula tu ventana con tu temperatura y la mueve cuando cuentas cómo va.

Empezar una tanda de {{ $nombre }}

{{-- 2.5 Problemas frecuentes --}} @if($guide->faqs)

Problemas frecuentes

@foreach($guide->faqs as $faq)
{{ $faq['q'] }}

{{ $faq['a'] }}

@endforeach
@endif {{-- 2.6 Variaciones — oculto mientras todas las recetas sean sombras --}} @if($variaciones->isNotEmpty())

Variaciones

@foreach($variaciones->take(6) as $v)
{{ $v->name }}
@endforeach
@endif {{-- 2.7 Cierre --}}

¿Lo fermentamos juntos?

Crea la tanda y Fermenty lleva la cuenta: te calcula las cantidades para tu volumen, te dice en qué días entra en su ventana y te avisa cuando toque catar.

Crear cuenta gratis

{{-- 2.8 Relacionados --}} @if($relacionados->isNotEmpty())

Del mismo estante

@foreach($relacionados as $r) @endforeach
@endif @endsection