/* global React, Nav, Footer, ClientTicker, LemonMark, WaterlemonCursor, useInView, useTweaks, TweaksPanel, TweakSection, TweakColor, TweakToggle */ const { useState, useEffect, useRef } = React; const ALL_CASES = [ { title: "Club Pilates", industry: "Wellness", location: "España · +25 estudios", summary: "Convertimos una franquicia franquiciada en una red de marcas locales con personalidad. Stories que sí venden, ads que traen leads, comunidad que retiene.", services: ["Redes Sociales", "Contenido", "Meta Ads", "Estrategia"], kpis: [{ v: "+25", l: "estudios" }, { v: "+340%", l: "leads/mes" }, { v: "+62%", l: "engagement" }, { v: "5 años", l: "juntos desde su apertura" }], stamp: "FLAGSHIP", grad: "linear-gradient(135deg, rgba(255,45,135,0.55), rgba(13,13,15,0.92))", cat: "wellness", }, { title: "O'Retorniño", industry: "Restauración", location: "Barcelona", summary: "\"El mejor pulpo de Barcelona\", hecho con amor y humor. Estrategia integral desde 2019: redes, foto, vídeo, ads. Reservas siempre llenas.", services: ["Estrategia", "Foto & Video", "Redes Sociales", "Contenido"], kpis: [{ v: "×25", l: "alcance" }, { v: "+250%", l: "crecimiento en redes" }, { v: "7 años", l: "juntos" }], stamp: "DESDE 2019", grad: "linear-gradient(135deg, rgba(255,184,217,0.5), rgba(13,13,15,0.9))", cat: "food", }, { title: "Centros Artes Marciales", industry: "Wellness · Defensa Personal", location: "España", summary: "Web nueva, SEO local, Google Ads y CRO para una red de centros familiares. De la búsqueda al lead cualificado, sin desperdicio de budget.", services: ["Web", "SEO", "Google Ads", "CRO"], kpis: [{ v: "+210%", l: "tráfico SEO" }, { v: "−38%", l: "CPL" }, { v: "TOP 3", l: "Google" }], stamp: "GROWTH", grad: "linear-gradient(135deg, rgba(225,29,116,0.5), rgba(26,26,29,0.95))", cat: "wellness", }, { title: "Orangetheory Valencia", industry: "Fitness · Franquicia", location: "Valencia", summary: "Creación de contenido y gestión de redes para una franquicia premium en Valencia. Un salto real en su presencia orgánica: más alcance, más comunidad, más marca.", services: ["Creación de contenido", "Redes sociales", "Comunidad"], kpis: [{ v: "Contenido", l: "creación mensual" }, { v: "Orgánico", l: "crecimiento en redes" }, { v: "5★", l: "valoración" }], stamp: "LOCAL ❤", grad: "linear-gradient(135deg, rgba(255,45,135,0.45), rgba(13,13,15,0.95))", cat: "wellness", }, { title: "Spandex España & Portugal", industry: "B2B · Suministros Gráficos", location: "Iberia", summary: "Acompañamiento de marketing en mercado B2B. Branding aplicado, comunicación con identidad, presencia en eventos y contenido pro.", services: ["Comunicación", "Eventos", "Contenido B2B"], kpis: [{ v: "2 países", l: "ámbito" }, { v: "+5 años", l: "partner" }, { v: "B2B", l: "vertical" }], stamp: "B2B PARTNER", grad: "linear-gradient(135deg, rgba(0,224,181,0.4), rgba(13,13,15,0.95))", cat: "b2b", }, { title: "Anita Gelato", industry: "Restauración · Heladería", location: "Barcelona · Europa", summary: "Llevamos sus redes orgánicas y de paid en Barcelona, y su TikTok para Europa: Londres, Chipre y España. Estrategia de marketing, creación de contenido y shootings para una marca que se come con los ojos.", services: ["Estrategia", "Redes sociales", "Paid Media", "TikTok", "Shooting"], kpis: [{ v: "3 países", l: "TikTok Europa" }, { v: "Orgánico", l: "+ paid en BCN" }, { v: "360", l: "estrategia y contenido" }], stamp: "INTERNACIONAL", grad: "linear-gradient(135deg, rgba(255,184,217,0.55), rgba(13,13,15,0.92))", cat: "food", }, ]; function CaseCardFull({ c }) { const [ref, inView] = useInView(); return (
{c.stamp}

{c.title}

{c.industry}
{c.location}

{c.summary}

{c.services.map((s, i) => ( {s} ))}
{c.kpis.map((k, i) => (
{k.v}{k.l}
))}
); } function App() { const [t, setT] = useTweaks(/*EDITMODE-BEGIN*/{ "accent": "#FF2D87", "cursor": true }/*EDITMODE-END*/); const [filter, setFilter] = useState("all"); useEffect(() => { const palettes = { "#FF2D87": { soft: "#FFB8D9", deep: "#E11D74" }, "#FF5A3C": { soft: "#FFC8B8", deep: "#D63C20" }, "#00E0B5": { soft: "#A8F4E4", deep: "#00A082" }, "#FFD23F": { soft: "#FFEC95", deep: "#D9A800" }, }; const p = palettes[t.accent] || palettes["#FF2D87"]; document.documentElement.style.setProperty("--wl-accent", t.accent); document.documentElement.style.setProperty("--wl-accent-soft", p.soft); document.documentElement.style.setProperty("--wl-accent-deep", p.deep); }, [t.accent]); const filtered = filter === "all" ? ALL_CASES : ALL_CASES.filter(c => c.cat === filter); return (