{{-- / — la home (docs/paginas/pagina-home.md). No explica el mentor: lo enuncia y lo deja probar. Quien quiera la tesis va a /mentor; quien quiera el precio, a /pro. Convencer en quince segundos y dar algo que tocar. Muere aquí (§0): beta/TestFlight, testimonios inventados, taxonomía vieja, «modo sin conexión», sorteo (sin bases publicadas — G4) y «Premium». --}} @extends('layouts.web') @section('seo') @endsection @php $app = \App\Support\Superficie::base(); // El copy vive en lang/{idioma}/pagina_home.php. $t = fn (string $k) => __("pagina_home.$k"); // {{ $t('faq.title') }}: fuente única para lo visible y para el FAQPage — // solo se marca lo que la persona ve en la página (bloque E3). $faqs = collect(range(1, 5))->map(fn ($i) => [$t("faq.q$i"), $t("faq.a$i"), $i === 1 ? 'pro' : ($i === 5 ? 'privacidad' : null)])->all(); @endphp @push('head') @php // Datos estructurados de la home (bloque E3). El FAQPage sale del MISMO // array que pinta el acordeón. SoftwareApplication describe la entidad una // sola vez y aquí, que es su página principal — SIN aggregateRating: no hay // reseñas reales y marcar una valoración inventada es sancionable. $ldFaqHome = ['@context' => 'https://schema.org', '@type' => 'FAQPage', 'mainEntity' => array_map(fn ($f) => [ '@type' => 'Question', 'name' => $f[0], 'acceptedAnswer' => ['@type' => 'Answer', 'text' => $f[1]], ], $faqs)]; $periodos = config('billing.periods'); $ldApp = ['@context' => 'https://schema.org', '@type' => 'SoftwareApplication', 'name' => 'Fermenty', 'applicationCategory' => 'LifestyleApplication', 'operatingSystem' => 'Web', 'url' => url('/'), 'description' => 'Calcula la ventana de fermentación de tu kombucha, kéfir o chucrut con la temperatura de tu cocina, y aprende de cada tanda.', 'offers' => [ ['@type' => 'Offer', 'name' => 'Gratis', 'price' => '0', 'priceCurrency' => 'EUR'], ['@type' => 'Offer', 'name' => 'Pro mensual', 'price' => number_format($periodos['month']['amount'], 2, '.', ''), 'priceCurrency' => 'EUR'], ['@type' => 'Offer', 'name' => 'Pro anual', 'price' => number_format($periodos['year']['amount'], 2, '.', ''), 'priceCurrency' => 'EUR'], ], ]; @endphp @endpush @section('content')

{{ $t('hero.eyebrow') }}

{{ $t('hero.h1_1') }} {{ $t('hero.h1_spark') }}.

{{ $t('hero.lede') }}

{{ $t('hero.pie') }}

{{-- El elemento LCP de la home: prioridad alta explícita para que no pierda contra el CSS y las fuentes en la cola de descargas (F4). --}} {{ $t('hero.alt') }}

{{ $t('como.eyebrow') }}

{{ $t('como.title') }}

{{ $t('como.t1') }}

{{ $t('como.p1') }}

{{ $t('como.t2') }}

{{ $t('como.p2') }}

{{ $t('como.t3') }}

{{ $t('como.p3') }}

{{ $t('como.enlace') }}

{{ $t('banda.title') }}

{{ $t('banda.primera') }}

{{ $t('banda.nota1') }}

{{ $t('banda.quinta') }}

{{ $t('banda.nota2') }}

{{ $t('banda.cierre') }}
{{ $t('banda.aprende') }} · {{ $t('banda.pro') }}

La app

{{ $t('app.title') }}

{{ $t('app.t1') }}

{{ $t('app.p1') }}

Paso de fermentación con ingredientes y escala de sensación

{{ $t('app.t2') }}

{{ $t('app.p2') }}

Barra de registro rápido e historial de eventos

{{ $t('app.t3') }}

{{ $t('app.p3') }}

Evaluación final de la tanda con valoración y perfil de sabor
  • {{ $t('app.f1') }} {{ $t('app.f1d') }}
  • {{ $t('app.f2') }} {{ $t('app.f2d') }}
  • {{ $t('app.f3') }} {{ $t('app.f3d') }}
  • {{ $t('app.f4') }} {{ $t('app.f4d') }}
  • {{ $t('app.f5') }} {{ $t('app.f5d') }}
  • {{ $t('app.f6') }} {{ $t('app.f6d') }}

{{ $t('fermentos.eyebrow') }}

{{ $t('fermentos.title') }}

@foreach($categorias as $cat) @continue($cat->guides->isEmpty())
@foreach($cat->guides->take(4) as $g) @endforeach
@endforeach

{{ $t('fermentos.todos') }}

Planes

{{ $t('planes.title') }}

Gratis

0 €

{{ $t('planes.free_nota') }}

{{ $t('planes.free_cta') }}

Pro

3,25 €/mes {{ $t('planes.pro_pagando') }}

{{ $t('planes.pro_suelto') }}

{{ $t('planes.pro_nota') }}

Ver Pro {{-- El precio publicado ES la tarifa Early Bird (2026-07-31). --}}

{{ $t('planes.pro_early') }}

{{-- El tercer plan no lleva nombre todavía (G6): la tarjeta habla del obrador, no de un plan. La tabla entera vive en /pro. --}}

{{ $t('planes.obrador_title') }}

{{ $t('planes.obrador_precio') }}

{{ $t('planes.scale_nota') }}

{{ $t('planes.scale_cta') }}

{!! $t('planes.scale_zymolab') !!}

{{ $t('planes.micro') }}

{{ $t('historia.eyebrow') }}

{{ $t('historia.title') }}

{{ $t('historia.p1') }} nuestra {{ $t('historia.p2') }}

{!! $t('historia.p3') !!}

{{ $t('historia.cta') }}

{{ $t('fund.eyebrow') }}

{{ $t('fund.title') }}

{{ $t('fund.p1') }}

{{ $t('fund.p2') }}

Qué recibes

  • {{ $t('fund.r1') }}
  • {{ $t('fund.r2') }}
  • {{ $t('fund.r3') }}

Qué pedimos

  • {{ $t('fund.q1') }}
  • {{ $t('fund.q2') }}
  • {{ $t('fund.q3') }}
@if(session('fundadores_ok')) @else
@csrf
{{-- Primer paso: lo mínimo. El tiempo fermentando, la temperatura de la cocina, la videollamada y el consentimiento de publicación se preguntan en el correo de respuesta, cuando ya hay conversación (bloque G del briefing). El consentimiento NUNCA es implícito ni viene premarcado: sigue siendo una acción afirmativa, allí. --}}

{{ $t('fund.priv_1') }} {{ $t('fund.priv_2') }}.

@if($errors->hasAny(['email','fermenta','tiempo','temperatura'])) @endif
@endif

{{ $t('faq.title') }}

@foreach($faqs as [$pregunta, $respuesta, $enlace])
{{ $pregunta }}

{{ $respuesta }} @if($enlace === 'pro') Ver planes@endif @if($enlace === 'privacidad') Privacidad@endif

@endforeach
@endsection @push('scripts') {{-- Turnstile perezoso (F4): el widget protege UN formulario al fondo de la página — cargarlo en cada visita regalaba un tercero a la carga inicial. Se dispara con la primera interacción (nadie envía sin haber hecho scroll) y, por red de seguridad, a los 8 s pase lo que pase: si alguien llegara al form sin interacción registrada, el widget ya está resuelto de sobra. En el laboratorio (sin interacción) no carga: exactamente lo que medimos. --}} @endpush