diff --git a/copy/COPY-GUIDE.md b/copy/COPY-GUIDE.md
index 91d9769..4a2925e 100644
--- a/copy/COPY-GUIDE.md
+++ b/copy/COPY-GUIDE.md
@@ -327,9 +327,15 @@ Somos los únicos en España que combinamos **captura instantánea del lead + ll
- **Título del paso:** ¿Cómo prefieres contarnos tu reforma, [Nombre]?
- **Subtitle:** Tú eliges. Por cualquiera de las tres nos das lo que necesitamos para preparar tu render y tu presupuesto.
+- **Stepper de progreso (encima del título):**
+ - Paso 1 (completado): *Tus datos*
+ - Paso 2 (actual): *Tu reforma*
+ - Paso 3 (pendiente): *Render + presupuesto*
+
- **Tarjeta Llamada — título:** Que te llamemos
**Descripción:** Un asistente te llama y te hace unas preguntas rápidas. Lo más cómodo: no escribes nada.
**CTA:** Quiero que me llamen
+ **Badge:** La más rápida
- **Tarjeta WhatsApp — título:** Por WhatsApp
**Descripción:** Seguimos por chat a tu ritmo. Puedes mandar fotos y notas cuando quieras.
**CTA:** Seguir por WhatsApp
@@ -337,6 +343,19 @@ Somos los únicos en España que combinamos **captura instantánea del lead + ll
**Descripción:** Tú lo cuentas zona por zona y subes las fotos. Recibes el presupuesto al instante.
**CTA:** Rellenar el formulario
+#### Bloque "Qué pasa después" (debajo de las tarjetas del chooser)
+
+> Recuerda al lead lo que va a recibir elija el canal que elija: personalización, render con
+> imágenes en minutos, y visita gratuita posterior para el presupuesto definitivo.
+
+- **Título:** Elijas lo que elijas, esto es lo que pasa después
+- **Paso 1 — título:** Nos cuentas tu reforma a tu manera
+ **Body:** Fotos, medidas, gustos. Cuanto más nos cuentes, más se parecerá el resultado a lo que tienes en la cabeza.
+- **Paso 2 — título:** Render + presupuesto en minutos
+ **Body:** Ves tu espacio ya reformado en imágenes, con un presupuesto orientativo desglosado partida a partida.
+- **Paso 3 — título:** Visita gratuita para el presupuesto final
+ **Body:** Si te convence, acuerdas una visita con [Reformista]: ve la obra, la mide con detalle y te confirma el precio definitivo. Sin compromiso.
+
### Paso 2 (canal llamada)
- **Título del paso:** Te llamamos cuando quieras
diff --git a/mvp/b2c/src/app/globals.css b/mvp/b2c/src/app/globals.css
index 02cdd60..fda30e1 100644
--- a/mvp/b2c/src/app/globals.css
+++ b/mvp/b2c/src/app/globals.css
@@ -58,6 +58,20 @@
--transition-fast: 150ms ease;
--transition-base: 250ms ease;
--transition-slow: 400ms ease;
+
+ /* Animations (usar con motion-safe: para respetar prefers-reduced-motion) */
+ --animate-fade-up: fade-up 0.7s cubic-bezier(0.16, 1, 0.3, 1) both;
+
+ @keyframes fade-up {
+ from {
+ opacity: 0;
+ transform: translateY(14px);
+ }
+ to {
+ opacity: 1;
+ transform: none;
+ }
+ }
}
@layer base {
diff --git a/mvp/b2c/src/app/solicitud/[id]/page.tsx b/mvp/b2c/src/app/solicitud/[id]/page.tsx
index 2fd5062..9e50c4d 100644
--- a/mvp/b2c/src/app/solicitud/[id]/page.tsx
+++ b/mvp/b2c/src/app/solicitud/[id]/page.tsx
@@ -1,82 +1,295 @@
import Link from 'next/link';
import { notFound } from 'next/navigation';
import { getPublicLead } from '@/lib/funnel/public-queries';
+import { resolveTheme, themeStyle } from '@/lib/funnel/themes';
import TenantBrand from '@/components/funnel/TenantBrand';
export const dynamic = 'force-dynamic';
+const BRAND = 'var(--brand, #0a0a0a)';
+const BRAND_CONTRAST = 'var(--brand-contrast, #ffffff)';
+
+function IconLlamada() {
+ return (
+
+ );
+}
+
+function IconWhatsapp() {
+ return (
+
+ );
+}
+
+function IconFormulario() {
+ return (
+
+ );
+}
+
const CANALES = [
{
slug: 'llamada',
- icon: '📞',
+ icon:
- Tú eliges. Por cualquiera de las tres nos das lo que necesitamos para preparar tu render - y tu presupuesto. -
-+ Tú eliges. Por cualquiera de las tres nos das lo que necesitamos para preparar tu + render y tu presupuesto. +
+{paso.body}
+