Wiwo Neo Design System Wiwo Neo Design System
Neo Design System

Un sistema para aumentar lo humano.

Neo organiza marca, producto, motion, IA, fotografía y voz para que cada experiencia Wiwo se sienta cálida, clara y profundamente humana. La inteligencia trabaja por dentro; las personas viven al frente.

Marca Wiwo El slogan corporativo Humanity, Augmented. orienta la expresión humana de la marca.
Producto Interfaces claras, componentes útiles y estados fáciles de leer.
Motion Movimiento natural, editorial y preciso que acompaña sin robar protagonismo.
IA Bots, agentes y automatizaciones discretos: la capacidad técnica nunca reemplaza la escena humana.
Slogan corporativo de Wiwo

Humanity Augmented

La tecnología no es la protagonista. Lo son las personas que cuidan, enseñan, crean, venden, construyen y hacen posible el futuro. Wiwo amplifica su capacidad sin borrar aquello que las hace humanas.

70% beige y humanidad 20% azul como señal 10% lime y tecnología
Nueva dirección de marca

Menos futuro como estética.
Más futuro como capacidad.

Neo deja de representar la inteligencia con abundancia de efectos futuristas. La expresa a través de personas que pueden hacer más: mejores decisiones, más creatividad, más cuidado, más tiempo y más posibilidades.

01

La persona primero

Rostros, manos, vínculos, oficio y emoción son el foco. La tecnología aparece como apoyo, nunca como sustituto.

02

Beige como mundo

El beige ocupa entre 60% y 80% de las composiciones. Construye luz, calma, cercanía y continuidad visual.

03

Serif como voz

Instrument Serif o Fraunces expresan humanidad, preguntas, manifiestos y conceptos emocionales.

04

Tech en microdosis

Tomorrow Light/Regular, siempre en mayúsculas, nombra versiones, datos, coordenadas y estados pequeños.

LA PREGUNTA ANTES QUE LA TECNOLOGÍA ¿Para quién?

Antes de mostrar qué puede hacer la inteligencia, Wiwo pregunta para quién puede hacerlo.

Aplicación editorial Wiwo con retrato humano, beige dominante y Humanity, Augmented.
Aplicación maestra: Tomorrow en microtexto, serif para lo humano, Plus Jakarta/Outfit para sistema y el lime como interrupción precisa.
01 Fundamentos

La lógica antes de la forma.

Principios, voz y conceptos retóricos que hacen que cada interfaz Wiwo tenga criterio antes de tener componentes.

Principios

Humanity, Augmented. define cómo se toman decisiones de interfaz, narrativa y experiencia. Todo parte de una pregunta: ¿esto amplifica a una persona o solo exhibe tecnología?

1

Humano, no demostrativo

La tecnología se demuestra a través de lo que permite hacer. Prioriza personas, consecuencias y posibilidades por sobre pantallas o efectos.

2

Editorial y respirable

Mucho beige, titulares serif con emoción, bloques claros y aire suficiente para que la imagen humana tenga presencia.

3

Inteligencia silenciosa

La interfaz explica estado, criterio y próximo paso sin presumir magia. El sistema es avanzado, pero su expresión es serena.

4

Contraste con propósito

Azul para identidad, lime para una acción decisiva y Tomorrow para la señal técnica. Ningún acento debe competir con la persona.

Retórica

Un slogan corporativo y cuatro territorios de apoyo. Humanity, Augmented. sostiene la marca Wiwo; los demás conceptos explican facetas específicas de su promesa.

Slogan corporativo de Wiwo

Humanity Augmented

Wiwo existe para hacer más posible lo humano. La inteligencia artificial, los datos y la automatización no son el destino: son capacidades al servicio del criterio, la creatividad, el cuidado y la ambición de las personas.

Idea fuerza La tecnología no reemplaza lo humano. Amplía lo que las personas pueden imaginar, crear, decidir y transformar.
Territorios de apoyo

Una promesa.
Cuatro maneras de demostrarla.

X10, The Power of You, Simple por fuera e Imagine Tomorrow no compiten como slogans corporativos. Funcionan como pruebas, enfoques o capítulos de Humanity, Augmented.

Wiwo. Humanity, Augmented.
Slogan corporativo / siempre activo

Lo humano,
amplificado.

La tecnología expande criterio, creatividad, intuición, cuidado y experiencia sin borrar la singularidad de cada persona.

Idea fuerzaLa IA no reemplaza a las personas: amplía su capacidad para imaginar, crear, decidir y transformar.
The Power of You
Expresión individual / The Power of You

La persona al centro.

La tecnología se adapta a las personas, no al revés.

Idea fuerzaLa IA potencia tu visión, tu talento y tu forma única de crear valor.
Simple por fuera, brutal por dentro
Promesa de producto / Simple por fuera

Brutal por dentro.

Ocultar complejidad para entregar fluidez, claridad y control.

Idea fuerzaExperiencias simples, impulsadas por sistemas profundamente inteligentes.
Imagine Tomorrow
Visión de futuro / Imagine Tomorrow

El futuro se construye.

El mañana no se espera: se imagina, se diseña y se convierte en sistemas reales.

Idea fuerzaEl futuro no se espera. Se imagina, se diseña y se construye.
Pregunta¿Para quién estamos construyendo esta capacidad?
RespuestaPara personas que pueden cuidar, crear, enseñar, vender y decidir mejor.
ResultadoTecnología avanzada que hace más posible lo humano.
02 Marca

Una identidad que se siente humana.

Logo, serif, beige, fotografía y acentos técnicos trabajan como un solo sistema: editorial por fuera, profundamente inteligente por dentro.

Marca

Neo conserva los archivos maestros de Wiwo y documenta el lockup Humanity, Augmented. como firma principal. Los descriptores de verticales siguen siendo funcionales; el slogan pertenece a toda la compañía.

Una marca reconocible sin quitarle espacio a la persona.

Beige construye el mundo; azul firma; lime interrumpe con intención. El slogan corporativo une compañía, plataformas y verticales bajo una misma visión humana.

Beige base Fondos, calma, lectura.
Verde acción CTA, estados vivos y launch.
Azul marca Logo, foco, selección.
Gradiente IA, cambio y momentum.
Arquitectura de marca

Un slogan para toda la compañía.
Descriptores para cada capacidad.

Humanity, Augmented. es la firma corporativa y conceptual. “For Business”, “For Shops”, “For Health”, Lab, Talk y MetriQ identifican unidades o productos; nunca sustituyen el slogan en comunicaciones maestras.

Wiwo For Business
Unidad / audiencia
Wiwo For Shops
Unidad / vertical
Wiwo For Health
Unidad / vertical
Wiwo Lab
Producto / plataforma
Wiwo Talk
Producto / plataforma
Wiwo MetriQ
Producto / plataforma
LOCKUP RULE / 01

En campañas institucionales: wiwo. + Humanity, Augmented. En producto: nombre de producto primero y el slogan como firma de cierre. No reutilizar antiguos claims de neoagencia como posicionamiento corporativo.

Principal Logotipo azul
Logotipo Wiwo azul
PNG transparente 1085 × 366 Fondos beige
Contraste Logotipo beige
Logotipo Wiwo beige
Ink #292929 Foto oscura Sin fondo morado
Acción Azul sobre verde
Logotipo Wiwo azul sobre campo verde
Campo #3BFF00 Estado vivo Uso puntual
Símbolo App, loader y sello
Símbolo Wiwo W
505 × 369 No estirar Icono

Presentación obligatoria

Cuando se presente el sistema de logo, muestra los dos archivos maestros —azul y beige— y la aplicación azul sobre campo verde. El símbolo se presenta aparte como ícono, loader o sello.

W / infinito vertical

El Lazo Infinito.

El símbolo de wiwo nace de un solo trazo que se pliega sobre sí mismo: dos vértices que se cruzan sin principio ni final. Es, al mismo tiempo, una W —la inicial de wiwo— y el signo del infinito puesto de pie.

El loop representa la conexión permanente entre posibilidades: ideas que se entrelazan, tecnología que dialoga con estrategia, marcas que se conectan con personas. Donde una línea parece terminar, gira y vuelve a empezar: el mismo movimiento de la innovación.

Un solo trazo La marca se entiende como continuidad: simple por fuera, potente por dentro.
Cruce central El corazón del símbolo: dos caminos se encuentran y se potencian.
Posibilidades sin límite Una W que es infinito, y un infinito que siempre vuelve al origen.

Proporción intacta

No comprimir, expandir ni reconstruir. El logotipo mantiene su relación 1085:366 y el símbolo 505:369.

Contraste por fondo

Azul sobre beige o superficies claras. Beige solo sobre tinta #292929 o fotografías con una zona oscura uniforme. Nunca beige sobre beige; verde solo para activación.

Zona segura

Reserva al menos la altura del punto final alrededor del logo. En interfaces compactas, usa el símbolo antes de reducir demasiado el logotipo.

Sin filtros

No aplicar sombras duras, recolor por CSS, blur ni efectos encima del archivo. Cambia de variante según el fondo.

Wordmark motion

La marca también respira.

El wordmark de Wiwo puede moverse, pero siempre como una presencia precisa: nada de deformarlo, estirarlo, rotarlo en exceso ni taparlo con efectos. La animación debe revelar intención, estado o transición.

  • Animar el contenedor, la máscara o el aura; no distorsionar el PNG del logo.
  • Usar verde y gradiente para actividad IA, éxito, carga o generación.
  • Duraciones suaves: microinteracción bajo 420ms; loop premium entre 2.4s y 4.4s.
Wiwo wordmark azul con respiración sutil

Brand breathe

Loop casi imperceptible para hero, sidebar, empty states o pantallas de espera largas. Se siente vivo sin parecer loader.

2.6s loop scale 1.012 idle
Wiwo wordmark beige con revelado líquido

Liquid reveal

Entrada de marca para loaders premium, modales de bienvenida y cambios de sección. El reveal ocurre por máscara, no por deformación.

4.4s cycle clip-path launch
Wiwo wordmark azul con barrido de luz

Gradient sweep

Barrido luminoso para estados IA: pensando, generando, exportando o sincronizando. La luz pasa sobre la marca y se retira.

3.2s sweep screen blend IA activa
Wiwo wordmark beige para preloader

Loader lockup

Para carga de marca, exports o generación de entregables. Aparece, se estabiliza y sale con calma; nunca parpadea ni grita.

3.2s loop opacity + y preloader
160msHover, press y foco. Respuesta inmediata sin sacudir el logo. 280msEntrada corta en botones, headers, tabs y microestados. 420ms+Reveals, loaders y transiciones IA con aura o máscara.

Descarga de assets

Archivos PNG transparentes listos para Figma, web, presentaciones y piezas comerciales.

Fotografía

La fotografía Wiwo observa personas reales con cercanía editorial: piel, gestos, vínculos, oficios y pequeños momentos de transformación. Beige como luz; tecnología como detalle.

Secuencia editorial Wiwo con trabajo, retrato y afecto humano
Photo system

Primero la vida. Después la tecnología.

La escena debe poder emocionar incluso si eliminamos toda interfaz. El sistema aumenta la historia; nunca es la historia.

Humanity, Augmented.

Más documental.
Menos futurista.

Calidez analógica, textura de piel, luz natural, grano sutil y actuaciones no posadas. La tecnología aparece en microgestos: una señal, un dato, un objeto translúcido o una capa casi invisible.

Verdad humana

Textura real, miradas imperfectas y presencia. Evitar belleza plástica, exceso de retoque o modelos sin historia.

Acción con sentido

Cuidar, enseñar, crear, vender, construir, aprender o vincularse. La escena siempre expresa una capacidad humana.

Color contenido

Beige #F8FAD7/#EDEFDD domina; lavanda y azul acompañan; lime aparece como una señal pequeña pero inolvidable.

Luz beige

Prioriza luz natural, tonos crema y sombras suaves. El beige no es un fondo neutro: es la atmósfera principal.

Personas con propósito

La persona hace algo significativo o comparte un vínculo real. Evita poses vacías, gestos de stock o entusiasmo forzado.

Tecnología secundaria

Incluye interfaz, dato u objeto solo cuando ayuda a entender la capacidad. Nunca debe tapar el rostro o dominar la escena.

Marca en detalle

Lime, azul y lavanda aparecen en un borde, prenda, objeto, tipografía o interfaz mínima; nunca como baño cromático total.

Evitar perfección artificial

Nada de cyber, piel encerada, oficinas de stock, CGI dominante o escenas imposibles. Wiwo es cálido, actual y reconocible.

Mundos humanos

Biblioteca visual con propósito.

Las imágenes se ordenan por la experiencia humana que ponen al frente —vínculo, cuidado, oficio, aprendizaje, creación y vida cotidiana—, no por el formato técnico que las contiene. La tecnología puede aparecer, pero nunca define por sí sola la escena.

Retratos Vínculos Oficio Cuidado Vida cotidiana
Laptop Wiwo en espacio beige con interfaz de producto
Escena Wiwo de futuro optimista con persona en retail
Humanidad al centroEl rostro y la historia conducen; la tecnología acompaña.
Burbuja de análisis con marca Wiwo
Cuidado y vínculoConfianza, escucha y atención entre personas.
Sistema de contenidos visuales Wiwo
Oficio y creaciónPersonas haciendo, probando y dando forma a una idea.
Persona presentando interfaz Wiwo Lab
Presencia realRetratos cálidos, singulares y sin pose publicitaria.
Persona presentando dashboard Wiwo Boost
IndividualidadPiel, mirada y detalles que sostienen una historia.
Display retail Wiwo con personas y objetos de marca
Vida cotidianaLa capacidad aumentada aparece en contextos reconocibles.
Objeto abstracto azul y verde para pieza de performance
EmprendimientoIdeas, trabajo y progreso contados desde la persona.
Objeto 3D de marca Wiwo con azul y verde
Retrato íntimoUna mirada directa y honesta, sin artificio innecesario.

Selecciona por historia

Antes de usar una imagen, define qué experiencia humana expresa: vínculo, oficio, cuidado, aprendizaje, creación o vida cotidiana.

Color al servicio

El beige construye atmósfera; azul y lime aparecen como señales pequeñas. El color nunca debe competir con el rostro o la acción.

Acción verdadera

Las personas hacen algo significativo o comparten un vínculo real. Evita poses vacías, entusiasmo forzado y gestos de stock.

Tecnología en segundo plano

Interfaces, datos y objetos aparecen solo si ayudan a entender la capacidad. Nunca tapan el rostro ni dominan la escena.

Foto + video

Movimiento para personas reales.

La dirección audiovisual observa antes de demostrar: gestos, miradas, manos, oficio y colaboración. La luz beige construye cercanía; azul y lime aparecen como señales breves de una tecnología que acompaña.

Persona primero Cámara observacional Luz natural Tech en microdosis
Retrato Wiwo con paneles azul y verde como referencia de cámara
Plano producto Wiwo con laptops y paneles de marca
Set de luz beige y azul para transiciones glass
Persona caminando en espacio Wiwo de marca
Acción observadaMovimiento lateral suave; la cámara acompaña a la persona.
Logo Wiwo en espacio glass con color de marca
Identidad en detalleMarca, materialidad y luz como pausa dentro del relato.
Objeto 3D Wiwo con azul y verde
Objeto con propósitoMovimiento sobrio para explicar uso, oficio o capacidad.
Frame vertical de campaña Wiwo
Retrato verticalSocial, reels y stories con mirada, gesto y frase breve.
Persona en acción dentro de mundo Wiwo optimista
Energía cotidianaAcción realista, cercana y nunca distópica o cyber.
Plano tecnológico Wiwo como producto glass
Producto en contextoLa interfaz aparece dentro de una historia, no como espectáculo.

Cámara

Plano sostenido, acercamiento suave y movimiento a la altura de la mirada. Evita órbitas robóticas, cámara nerviosa o velocidad demostrativa.

Luz y color

Beige luminoso y piel natural como territorio dominante. Azul identifica; lime activa. Evita neón distópico, metal oscuro o brillos sin calidez.

Edición

Dar tiempo a la expresión y a la acción: planos de 600 a 1200ms como base. Las microinteracciones pueden vivir en 160/280ms sin acelerar el relato humano.

Uso correcto

Estos archivos son referencia visual. No prometer video real si no existe archivo fuente, render o pieza editada.

ContextoPlanoMovimiento
Persona + herramientaMedio / detalleMirada, manos y resultado antes que la interfaz.
Trabajo realPlano medio / contextoMovimiento lateral lento; el entorno explica el propósito.
Señal tecnológicaDetalle / sistemaOverlay o dato breve en azul; lime solo cuando existe acción.
Campaña humanaVertical 9:16Retrato, frase serif y cierre con Humanity, Augmented.
03 Sistema

Tokens, componentes y patrones.

La parte consumible: fuente única de tokens, componentes para producto real y reglas de layout que escalan.

Tokens

Base reutilizable para web, Figma y producto. Primero se nombran las funciones; después, los colores de marca.

Color

El beige domina el sistema. El azul firma y organiza; el lime identifica la expresión humana; el verde intenso comunica acción y progreso; la tinta sostiene la lectura. Regla estricta: ningún verde se usa como texto sobre fondos claros.

Beige principal#F8FAD7
Beige cálido#EDEFDD
Azul identidad#4242FF
Lime humano#8AF84F
Verde señal#3BFF00
Tinta#292929

Degradados

El degradado verde–azul se conserva para estados de sistema, IA activa y motion. No es fondo editorial ni recurso dominante de campaña.

Activo IA y progreso
Suave fondos de sistema
Inverso componentes oscuros

Tipografía

Voz humana / 400
lo humano.
Alternativa editorial / 300–700
¿para quién?
Marca y producto / 400–800
Outfit + Plus Jakarta Sans
Microtexto técnico / 300–400
WIWO — HUMANITY, AUGMENTED. / BRAND
Instrument SerifManifiestos, preguntas y titulares editoriales de tono humano. No sustituye el lockup oficial del slogan.
FrauncesAlternativa editorial para campañas, cifras expresivas y titulares con mayor tensión.
Plus Jakarta SansTexto, lectura, interfaz, datos, formularios y accesibilidad.
OutfitLockup oficial de «Humanity, Augmented.»; marca, descriptores, titulares funcionales, submarcas y producto.
Tomorrow Light / RegularSolo elementos pequeños, siempre en mayúsculas: versiones, coordenadas, labels técnicos y metadata.
lo humano.
Instrument Serif / cream
¿para quién?
Instrument Serif / blue
the human.
English / cream

El sistema usa Instrument Serif, Fraunces, Plus Jakarta Sans, Outfit y Tomorrow. En este documento están autohosteadas las variantes necesarias para representar fielmente la jerarquía.

Instrument Serif Fraunces Variable Plus Jakarta Sans Outfit Variable Tomorrow 300/400

Forma y espacio

El sistema usa formas simples: tarjetas con radio base de 16px, superficies expresivas de 24–36px, controles tipo píldora, focos visibles y grillas con ritmo de 4/8px.

Radio de tarjeta16px
Radio de control999px
Espacio de grilla16 / 24 / 32

Modo oscuro semántico

Los modos claro y oscuro comparten nombres semánticos: las vistas cambian al cambiar --surface, --ink, --line y los contenedores.

PrimitivosAzul, verde, beige fijos
SemánticosSuperficie / tinta / línea
InversoBotones sobrios y cabeceras
Source of truth

Tokens como código

El HTML documenta el sistema y expresa el contrato canónico de tokens. En una implementación de producto, ese contrato debe exportarse a JSON y regenerar cada salida desde una sola fuente.

wiwo.tokens.json Especificación de referencia
Build npm run build:tokens
Generated outputs

Una fuente, tres consumos

Estos archivos se generan desde el JSON. No se editan a mano: web, Figma y Tailwind deben leer el mismo origen para evitar deriva.

JSON -> CSS / Tailwind / Figma -> Producto
CSS variables wiwo.tokens.css
Tailwind config wiwo.tailwind.config.cjs
Figma variables wiwo.figma.variables.json
Manifest build metadata
Token Valor Muestra Uso
--wiwo-beige #F8FAD7 Fondo principal, secciones largas, documentos, superficies de lectura.
--wiwo-beige-alt #EDEFDD Fondos secundarios, bloques alternos, superficies operativas y áreas de descanso visual.
--wiwo-blue #4242FF Identidad, foco, selección, links importantes y elementos de confianza.
--wiwo-lime #8AF84F Acento humano, lockup de Humanity, Augmented. e interrupciones editoriales puntuales.
--wiwo-green #3BFF00 Acción primaria, energía y progreso. Nunca usar como texto sobre beige o blanco; solo sobre oscuro, como relleno con tinta encima o en gráficos no textuales.
--wiwo-gradient-primary 103deg Momentos de IA, transformación y transiciones de estado. No usar como fondo editorial dominante.
--chart-primary #4242FF Serie principal de KPIs: revenue, conversión, selección y foco en dashboards.
--chart-positive #3BFF00 Crecimiento, progreso positivo, completion y mejoras confirmadas.
--chart-grid Light / Dark Líneas de chart semánticas. Cambian con el tema para no hardcodear grillas.
--glass-fill rgba 24% Capas liquid glass: toolbars, overlays, docks, command palettes y estados flotantes.
--surface Light beige / Dark ink Fondo base del producto. Cambia con el tema y evita fondos hardcodeados por pantalla.
--surface-container Elevación semántica Cards, tablas, tool surfaces y paneles operativos. En dark se eleva sin usar negro sólido.
--ink Light #292929 / Dark beige Texto principal. No usarlo como fondo; para superficies opuestas existe --surface-inverse.
--line Borde por tema Separadores y contornos. En dark baja opacidad para que el dashboard no se vea alambrado.
--surface-inverse Modo opuesto Botones sobrios, headers de tablas y contenedores premium; siempre con --ink-inverse.

Componentes

Componentes mínimos para empezar un producto Wiwo: acción clara, estados visibles y contenido fácil de escanear.

A11y layer

Foco visible real

Todo control interactivo usa :focus-visible con ring azul/verde según tema. El foco no depende de hover ni de color solamente: debe verse en teclado, formularios, icon buttons, chips y nav.

3px ring + 7px glow
LoadingMantiene tamaño, comunica espera y no mueve el layout. ErrorTexto específico, borde visible y mensaje accionable. DisabledNo depende solo de opacidad; conserva lectura y cursor claro.
Approved pairs

Contraste aprobado

La paleta Wiwo se usa con pares cerrados. Si el fondo se mueve, el texto necesita overlay, glass o contenedor estable.

Fondo Texto Uso Regla
Beige #F8FAD7 / #EDEFDD #292929 UI base, lectura, dashboards Aprobado para texto normal y largo.
Verde #3BFF00 #292929 CTA, estado activo, success Nunca usar blanco sobre verde lima.
Azul #4242FF #FFFFFF o #F8FAD7 Marca, foco, selección Aprobado para botones, chips y headers.
Ink #292929 #F8FAD7 Dark mode, cards premium No usar negro sólido; ink es el límite oscuro.
Gradiente Wiwo #292929 sobre glass claro o #F8FAD7 sobre overlay ink IA, progreso, transformación Texto directo solo si el fondo queda estabilizado.

Botones y acciones

Usa verde para la acción más importante, ink #292929 para acción sobria y grupos conectados cuando hay decisiones hermanas.

Chips y filtros

Los chips agrupan contexto, no reemplazan titulares. Buenos para estados de IA, categorías y filtros rápidos.

AI ready Marca Producto Growth

Formulario

Labels siempre visibles. Ayuda corta. Foco azul. Error con texto específico, no solo color.

Formato sugerido: audiencia + acción + contexto.
Segmenta por rol, industria o momento de compra. Especifica una audiencia concreta antes de activar el flujo.
El estado disabled debe explicar por qué no se puede editar.

Estados

Los estados deben poder leerse sin depender del color. Incluye nombre, icono o microcopy.

PublicadoVisible
En revisión2 cambios
BloqueadoFalta dato

Navegación de producto

Nav compacta, íconos reconocibles, estado activo evidente y superficie limpia para trabajo repetido.

Wiwo

Briefs activos

Patrón hero / portada

Para piezas editoriales o comerciales, usar imagen real o arte generado. El texto va sobre la escena, no en una tarjeta flotante.

Insight Launch

Liquid glass

Úsalo para capas flotantes sobre color o video: dock, comando, búsqueda, overlays y estados que necesitan profundidad.

Glass layer blur 22px / stroke claro / highlight vivo
Live
Product core

Componentes para producto real

Wiwo Boost, MetriQ y cualquier herramienta operativa necesitan UI de trabajo: tablas densas, feedback claro, estados vacíos útiles, paginación, dialogs accesibles y una paleta estable para KPIs.

Densidad lectura rápida Feedback visible y reversible Data viz tokens compartidos
Data table

Tablas para dashboards

La tabla es componente crítico: debe permitir escaneo, comparación, sorting, filtros, estados, tendencia, progreso y paginación sin convertirse en una grilla de tarjetas.

Campaign performance 24 resultados / actualizado hace 2 min
Cliente Etapa KPI Tendencia Señal Próxima acción
Retail launchPaid + retail media Live 84% brief clarity +12% Priorizar audiencias con intención alta.
Audience mapMetriQ cohort scan Revisión 62% fit score -4% Corregir segmento y excluir ruido.
Creative routesBoost generative flow Listo 12 assets aprobados +31% Exportar formatos por canal.
Mostrando 1-10 de 24. Usar 10, 25 o 50 filas según densidad del dashboard.
Feedback

Toasts y empty states

El feedback debe confirmar lo que pasó, decir qué hacer ahora y no esconder estados importantes en una esquina sin contexto.

Dialog

Modales para decisiones reales

Un modal no es una decoración: interrumpe el flujo solo cuando la decisión importa, mantiene foco, explica impacto y vuelve al punto de origen al cerrar.

Window flow

Interacciones entre ventanas

Cuando una acción mueve contexto entre modal, panel, agente, preview o export, la transición debe sentirse como un traspaso de estado: no una pantalla nueva desconectada.

Connected windows

Una ventana entrega contexto a la siguiente.

Este patrón sirve para productos con IA, dashboards y workflows de campaña: cada ventana recibe contexto, hace visible el trabajo invisible y deja claro cuál es el siguiente paso.

OrigenLa ventana que dispara conserva foco, estado y posibilidad de volver. TraspasoEl handoff usa luz, progreso y copy para mostrar qué información viaja. DestinoLa nueva ventana confirma recepción y muestra acción siguiente.
BriefActivo
Campaña retail Q3

Recibe audiencia, objetivo, presupuesto y restricciones antes de pedirle trabajo a la IA.

IAEn espera
Agente de rutas

Toma el brief y genera caminos, riesgos, assets necesarios y próximos pasos.

PreviewEn espera
Vista de impacto

Convierte la propuesta en composición, KPIs esperados y cambios visibles.

ExportEn espera
Entrega final

Cierra el ciclo: archivos, tracking, historial, responsables y siguiente señal.

No saltarCada ventana debe explicar qué recibió y qué cambió. Sin pérdidaEl usuario siempre puede volver al origen con el contexto intacto. IA visibleLos agentes muestran progreso, límites y decisiones pendientes. Motion útilLa animación indica traspaso, no adorno: 280-420ms y easing expresivo.
Lightbox

Lightbox para assets, video y evidencia

El lightbox se usa cuando el usuario necesita inspeccionar una pieza sin salir del flujo: imagen, frame de video, mockup, asset de campaña o evidencia visual. Debe abrir rápido, oscurecer contexto, mantener navegación y devolver foco al trigger.

Data viz

Paleta para KPIs y charts

Los gráficos no deben inventar colores por pantalla. Usa tokens de chart, reserva lime para acción/positivo, azul para serie principal y deja danger solo para problemas reales.

Revenue pulse

Serie principal + positivo + alerta
Conversión Growth Riesgo
Primary Positive Attention Warning Danger Neutral AI assist Cohort soft
Máx. 5 seriesSi hay más, usa filtros o pequeños múltiples.
Grid semántico--chart-grid cambia con light/dark.
No arcoirisColor significa estado, no decoración.

Wiwo Expressive

El sistema usa tácticas expresivas: contraste de forma, contención tonal, grupos de acción, motion con easing y jerarquía por tamaño.

160ms 280ms 420ms
Wiwo Expressive
Launch ready Botones grandes, contenedores tonales, radios variables y progreso con gradiente.
Assets12 piezas aprobadas 100%
MediaPlan en revisión 54%
Interaction intelligence

IA, bots y microanimaciones

En Wiwo la IA no aparece como un spinner genérico. Se comporta como una capa viva: escucha, piensa, propone, confirma y se retira sin robar protagonismo. El movimiento debe explicar que el sistema está trabajando, pero siempre con calma, precisión y una estética optimista.

IA interpretando el brief Halo suave, gradiente activo y copy que cambia con intención.
Live
Bot orchestra
Cómo interactúan los bots

Los bots se ven como agentes coordinados, no como ventanas sueltas. Cada agente declara qué está haciendo, qué encontró y cuál es la próxima acción útil.

Brief bot Ordena el contexto, detecta ambigüedades y pide solo lo que falta.
Strategy bot Transforma insight en ruta, prioridad, canal y decisión siguiente.
Production bot Genera variaciones, adapta formatos y cuida consistencia visual.
Listen Think Build Ship
Motion grammar
Letras, ventanas y modales

El texto generado por IA aparece con reveal editorial, no con máquina de escribir lenta. Las ventanas entran desde profundidad y desaparecen con compresión suave, como si el sistema limpiara el espacio para la siguiente decisión.

thepowerofyou
Usar stagger corto de 12 a 24ms por carácter, blur de salida bajo y easing `power3.out`. Para datos operativos, revelar por bloque o palabra; para titulares, por letra.
Animated gradients
Cómo viven los gradientes en plataformas Wiwo

El gradiente no debe ser una alfombra decorativa permanente. Debe aparecer como energía del sistema: borde vivo, halo de IA, progreso, foco de selección, transición de estado o momento de transformación.

Producto SaaSHalo sutil en cards activas, rails de progreso y estados Live.
IA generativaÓrbitas suaves mientras piensa, luego pulso verde al resolver.
3D / R3FSuperficies tipo WiwoSurface, luz viva y cámara con easing lento.
CampañasGradiente más expresivo en héroes, transiciones y piezas de alto impacto.
Motion contract
Reglas avanzadas para IA y microinteracciones

La experiencia debe sentirse cara: pocas cosas se mueven al mismo tiempo, cada movimiento tiene causa y todo vuelve rápido a un estado legible.

80 a 160msTap, hover, ripple, press, selección y feedback inmediato. Usar en botones, chips y controles.
220 a 320msCambios de estado: tab activa, item que se expande, card recomendada, chip que confirma.
380 a 520msEntrada/salida de modal, command palette, drawer IA, ventanas flotantes y overlays glass.
700 a 1200msIA pensando, gradiente orbitando, transiciones 3D, ScrollTrigger scrub y momentos hero.
IA idleOrbita mínima, opacidad baja, gradiente respirando. No distrae mientras el usuario lee.
IA thinkingHalo azul/verde, dots o círculos sincronizados, copy activo y avance perceptible.
IA outputReveal por palabra o bloque, luego highlight temporal sobre la decisión importante.
ExitVentana comprime, sube 8 a 12px, blur 4 a 6px y deja el foco en la acción siguiente.
"use client";

import { useRef } from "react";
import gsap from "gsap";
import { useGSAP } from "@gsap/react";
import { ScrollTrigger } from "gsap/ScrollTrigger";
import { SplitText } from "gsap/SplitText";

gsap.registerPlugin(useGSAP, ScrollTrigger, SplitText);

export function AiMotionSection() {
  const scope = useRef<HTMLElement>(null);

  useGSAP(() => {
    if (window.matchMedia("(prefers-reduced-motion: reduce)").matches) return;

    const split = SplitText.create("[data-ai-title]", {
      type: "words,chars",
      mask: "words"
    });

    const tl = gsap.timeline({
      defaults: { ease: "power3.out" },
      scrollTrigger: { trigger: scope.current, start: "top 72%" }
    });

    tl.from(split.chars, { y: 14, opacity: 0, filter: "blur(6px)", stagger: 0.018, duration: 0.42 })
      .from("[data-agent-card]", { y: 18, opacity: 0, scale: 0.98, stagger: 0.08, duration: 0.5 }, "-=0.2")
      .to("[data-modal]", { y: -10, opacity: 0, scale: 0.985, filter: "blur(6px)", duration: 0.18 }, "+=1.2");

    return () => split.revert();
  }, { scope });

  return <section ref={scope} data-ai-motion-section />;
}
Cognitive presence

Wiwo Thinking Orb

El orb es la señal propia de Wiwo para comunicar que una plataforma o IA está pensando. No es un loader ni un spinner: es una señal viva, precisa y serena que respira, razona, genera y vuelve a la calma.

Thinking Gradiente activo, auroras suaves, halo profundo y destellos difusos.
Inteligencia al servicio de la persona. Debe sentirse cálido, preciso y profundamente capaz, sin caer en códigos cyber, robots, circuitos obvios ni neón excesivo.
Orb states
Estados de pensamiento

Cada estado cambia ritmo, brillo, deformación y dirección del movimiento. El usuario debe sentir que algo inteligente está ocurriendo, sin perder legibilidad ni calma.

Advanced stack
Cómo construirlo en plataformas Wiwo

El orb puede vivir en CSS para producto liviano, Rive para estados vectoriales exportables o Three.js / React Three Fiber cuando se necesita profundidad real, shaders y escenas tipo WiwoSurface.

  • GSAP + SplitTextSincroniza cambio de estado, texto animado y salida de respuestas con timelines precisos.
  • ScrollTrigger + LenisActiva el orb con scrub, pinning y scroll suave en demos, onboarding o presentaciones.
  • RiveIdeal para estados pequeños, botones IA, micro loaders y componentes exportables entre producto y marketing.
  • Three.js / React Three FiberUsar para orbs grandes, escenas inmersivas, shaders, refracción, partículas y profundidad real.
Usage rules
Tamaños, contexto y restricciones

El orb reemplaza esperas genéricas en propuestas, análisis, contenido, reportes, automatizaciones, chat, insights y módulos con agentes. Debe sentirse preciso y sereno, nunca decorativo.

Small24 a 32 px, botones y microestados.
Medium48 a 72 px, tarjetas, campos y respuestas en línea.
Large120 a 240 px, generación completa y onboarding.
No spinner.Evitar círculos giratorios, barras técnicas y estados genéricos de carga.
No IA obvia.No cerebros, robots, chips, circuitos literales ni ondas de audio.
No futuro frío.No cyberpunk, hacker, Matrix, gamer, crypto pesado ni neón excesivo.
Sí reduced motion.Congelar rotación, mantener respiración mínima y comunicar estado con copy.

Vidrio funcional, no decorativo.

Capas translúcidas para contextos de IA, barras de herramientas y superposiciones de alto foco. Usar solo cuando la profundidad ayude a entender la jerarquía.

Uso puntual
92% Claridad de decisión con una capa sobria sobre el sistema Wiwo.
Glass mode blur 22px, saturación alta, stroke claro.
22pxBackdrop blur
42%Stroke claro
0.24Fill alpha
Command palette glass Overlay para acciones rápidas sin perder contexto visual.
Activar ruta IAReordena brief, audiencia y próxima acción.
Enter
Convertir en capaUsa glass solo donde hay profundidad útil.
G

Launch control

Ejemplo de interfaz operativa con tokens Wiwo.

84%Brief clarity
12Assets listos
3Bloqueos
AIModo copiloto
Retail launch En progreso
Audience map Revisión
Creative routes Listo
04 Motion & IA

El sistema debe sentirse vivo.

Animaciones, preloaders, bots, orbes y stack técnico se documentan como comportamiento de producto.

Preloaders

Los preloaders de Wiwo no son mensajes técnicos de carga. Son una extensión de la personalidad del producto: hacen que la espera se sienta activa, inteligente y de marca.

Traduciendo brief ambiguo... Microcopy vivo + icono de marca + gradiente en movimiento.
Wiwo

Wordmark para cargas de marca, exports, entregables y experiencias premium.

Círculos gradiente para estados compactos, dashboards, tablas y acciones inline.

Waiting as brand

La espera también comunica.

En vez de decir "Cargando..." o "Procesando...", Wiwo convierte la espera en una experiencia de marca: humor de industria, ironía inteligente, lenguaje operativo y señales reales del trabajo que el sistema está resolviendo.

Regla madre Si el sistema está trabajando, el usuario debe sentir que algo útil, creativo y concreto está pasando.
Progress language

Barras de carga vivas.

Las barras de Wiwo no son rellenos técnicos: muestran avance real, estado cognitivo o handoff operativo con gradiente, ritmo y microcopy. Deben sentirse precisas, ligeras y parte del producto.

PorcentajeSolo cuando hay progreso medible por backend, cola, exportación o etapas reales. IndeterminadoPara IA pensando, análisis visual, brief ambiguo o procesos donde no conviene prometer tiempo. ContrasteVerde como fill con tinta #292929 encima; nunca verde como texto sobre beige o blanco.

Determinada

Para exports, carga de assets o generación por lotes con progreso real.

Assets aprobados72%

Indeterminada

Cuando la IA está razonando y el sistema no conoce duración exacta.

Analizando intenciónActivo
Microcopy recomendadoSin % falso

Por etapas

Para flujos con estados claros: brief, análisis, producción, revisión y entrega.

Producción de campaña3/5

Liquid glass

Para overlays, command palettes, modales IA y experiencias premium sobre fondos profundos.

Composición inteligente78%
Blur + brillo + gradienteNeo glass

Inline compacto

Para filas de tabla, cards de dashboard y estados que conviven con contenido denso.

Revenue pulse
84%
Audience map
IA

Exportación

Cuando hay subprocesos paralelos, muestra cada capa para que la espera se sienta concreta.

Formatos por canalPreparando piezas adaptadas
Paquete finalOptimizando peso y nombres
DuraciónIndeterminadas entre 900ms y 1600ms por ciclo; determinadas sin saltos bruscos. MotionUsar gradiente animado, shimmer suave y easing expresivo; nada de parpadeo agresivo. CopyUna línea concreta junto a la barra. El mensaje explica qué se está resolviendo. Reduced motionLa barra mantiene fill estático y estado legible cuando el usuario reduce animación.

Humanizar procesos complejos

Transforman tareas técnicas en acciones comprensibles y cercanas.

  • Construyendo estrategia de marca...
  • Detectando oportunidades ocultas...
  • Ajustando narrativa de marca...

Reírse de los dolores

Humor interno de marketing, diseño, publicidad y ventas.

  • Agregando más logos al PPT...
  • Esperando feedback eterno...
  • Traduciendo brief ambiguo...

Mostrar trabajo invisible

Hacen visible lo que la plataforma resuelve automáticamente.

  • Recalculando jerarquía...
  • Optimizando para cada canal...
  • Cerrando loops eternos...

Generar expectativa positiva

La espera se convierte en anticipación, no fricción.

  • Preparando algo bueno...
  • Vale la pena...
  • Haciendo magia sin drama...

Reforzar valor Wiwo

Cada mensaje recuerda que Wiwo convierte tecnología en impacto.

  • Haciendo que marketing venda...
  • Transformando datos en acción...
  • Quitando sufrimiento manual...

Estructura

Ícono primero: wordmark Wiwo para momentos de marca o tres círculos para estados compactos. Nunca loader genérico sin personalidad.

Movimiento

Gradiente verde/azul, pulso suave, dots en wave, barra indeterminada o wordmark respirando. Duración base: 900ms a 2400ms.

Texto animado

El mensaje cambia cada 1.6 a 2.4 segundos. Evitar repetir una sola frase o estados fríos como "Procesando...".

Tono

Mezcla operativo + humor profesional + cultura creativa. Irreverente, pero nunca burlesco con el usuario.

Accesibilidad

Respetar reduced motion. Usar aria live polite si el texto informa progreso real; decorativo si solo entretiene.

Biblioteca de mensajes

Mensajes cortos, rotativos y con sabor de industria. Se pueden mezclar por contexto: marketing, diseño, datos, ventas, producción, exportación o IA.

Industria y humor

  • Buscando el "hagámoslo viral"...
  • Agregando más logos al PPT...
  • Esperando feedback eterno...
  • Ajustando el logo más grande...
  • Evitando archivos_final_v12_OK_final.psd...
  • Traduciendo feedback confuso...
  • Haciendo una versión más...
  • Bajando el brief del Olimpo...

Trabajo invisible

  • Recalculando jerarquía...
  • Priorizando elementos clave...
  • Optimizando para cada canal...
  • Ajustando lo que no entraba...
  • Tomando decisiones de diseño...
  • Cerrando loops eternos...
  • Reorganizando elementos...
  • Preservando intención creativa...

Expectativa positiva

  • Preparando algo bueno...
  • Vale la pena...
  • Ya casi...
  • Esto se ve bien...
  • Terminando detalles...
  • Haciendo magia sin drama...
  • No te muevas...
  • Un segundo...

Valor Wiwo

  • Haciendo que marketing venda...
  • Transformando awareness en ventas...
  • Reemplazando PowerPoint por resultados...
  • Eliminando humo...
  • Transformando datos en acción...
  • Quitando sufrimiento manual...
  • Reemplazando excusas por resultados...
  • Haciendo el trabajo pesado...

Diseño y resize

  • Analizando imagen...
  • Detectando proporciones...
  • Reescalando contenido...
  • Adaptando a nuevos tamaños...
  • Reencuadrando visual...
  • Evitando que el logo se corte...
  • Salvando la composición...
  • Estirando sin romper...

Marketing, ventas y datos

  • Construyendo estrategia de marca...
  • Detectando oportunidades ocultas...
  • Creando campañas que sí convierten...
  • Activando audiencias correctas...
  • Calificando leads...
  • Optimizando pipeline...
  • Analizando patrones...
  • Construyendo dashboards...

HTML base

Usar wordmark o dots. El texto vive en un nodo único para poder rotarlo sin layout shift.

<div class="wiwo-preloader wiwo-surface-dark" role="status" aria-live="polite" aria-busy="true">
  <img class="wiwo-preloader-logo" src="/logos/wiwo-beige.svg" alt="Wiwo" />
  <div class="wiwo-loader-orb" aria-hidden="true"></div>
  <p class="wiwo-preloader-copy" data-loader-message>Traduciendo brief ambiguo...</p>
  <div class="wiwo-progress" aria-hidden="true"><span></span></div>
</div>

Banco JS

Rotación simple. En producto, filtrar por contexto: export, IA, resize, datos, ventas o espera general.

const messages = [
  "Buscando el \"hagámoslo viral\"...",
  "Recalculando jerarquía...",
  "Transformando datos en acción...",
  "Haciendo magia sin drama..."
];

export function startWiwoPreloader(root) {
  const message = root.querySelector("[data-loader-message]");
  let index = 0;

  const setMessage = () => {
    message.dataset.state = "changing";
    window.setTimeout(() => {
      message.textContent = messages[index++ % messages.length];
      message.dataset.state = "ready";
    }, 180);
  };

  setMessage();
  const timer = window.setInterval(setMessage, 1900);
  return () => window.clearInterval(timer);
}

Iconografía

Lucide Icons es la biblioteca base para producto digital Wiwo: SVG livianos, minimalistas, consistentes, personalizables y listos para React, Next.js, Tailwind y shadcn/ui.

Lucide como base de producto.

Usar Lucide para dashboards, SaaS, landing pages, apps, botones, menús, estados y acciones. El documento también está construido con Lucide inline para ser su propio mejor ejemplo.

1.700+ íconos SVG 24px grid stroke 2px
Search
Dashboard
Sparkles
Bot
Edit
Bell
Wand
Arrow

Stroke consistente

Base 2px. Usa 1.75 para UI editorial o 2.25 para acciones primarias, sin mezclar pesos dentro del mismo componente.

Grid 24px

Botones 18 a 20px, nav 20px, cards 24px, hero o empty states 32 a 40px con absoluteStrokeWidth.

Color por contexto

Hereda currentColor. Azul para navegación/foco, verde para acción, #292929 para controles sobrios y beige solo sobre fondos profundos.

Accesibilidad

Iconos decorativos con aria hidden. Icon buttons con aria label. Acciones importantes siempre con texto visible.

Producto / SaaS

Interfaces de trabajo, dashboards, CRM, tablas, búsqueda y configuración.

LayoutDashboard Search SquarePen

IA / Launch

Momentos de magia controlada: automatización, copiloto, sugerencias y activaciones.

Sparkles Bot WandSparkles

Estado / Feedback

Confirmaciones, alertas, estados vivos y microinteracciones de producto.

Check Bell TriangleAlert

Next.js / React

Importa solo lo que se usa. Lucide trabaja bien con React Server Components cuando el icono no necesita estado.

// app/components/wiwo-action.tsx
import { Sparkles } from "lucide-react";

export function WiwoAction() {
  return (
    <button className="wiwo-button-primary" type="button">
      <Sparkles size={20} strokeWidth={2} aria-hidden="true" />
      Activar flujo
    </button>
  );
}

Tailwind / shadcn

Usa clases de tamaño estables y color por currentColor. No fijar colores inline salvo íconos de estado.

// app/components/launch-action.tsx
import { Rocket } from "lucide-react";
import { Button } from "@/components/ui/button";

export function LaunchAction() {
  return (
    <Button
      type="button"
      className="gap-2 rounded-control bg-wiwo-green text-wiwo-ink font-action disabled:opacity-disabled"
    >
      <Rocket className="size-4" strokeWidth={2} aria-hidden="true" />
      Lanzar
    </Button>
  );
}
Contexto Usar Regla
Producto digital Wiwo Lucide Icons Default para dashboards, apps, SaaS, landing pages y shadcn/ui.
Producto nuevo Lucide inline SVG con currentColor, stroke 2px y sizing por tokens. No usar icon fonts.
Marca o assets custom SVG propio Solo logos, marcas, ilustraciones o íconos que Lucide no resuelva con claridad.

Stack motion

Para experiencias Wiwo de alto impacto: Next.js como base, GSAP para movimiento preciso, Lenis para scroll, Rive para vectores interactivos y Three.js / React Three Fiber solo cuando el caso requiere 3D real.

Construir con movimiento.

El sistema no se implementa como una plantilla plana. Cada sitio, campaña o producto elige la capa de movimiento mínima que necesita para orientar, explicar o responder.

Next.js App Router GSAP ScrollTrigger SplitText Lenis Rive Three.js / R3F
wiwo.
GSAP Lenis Rive Three.js
Scroll

GSAP + ScrollTrigger

Para pinning, scrub, snap, parallax y transiciones ligadas al scroll con control fino. Es la capa pro para marca, campañas y heroes expresivos.

pin scrub snap
Texto

SplitText

Para titulares que aparecen por línea, palabra o carácter. Ideal en hero sections, manifiestos y bloques editoriales con precisión de motion design.

lines words stagger
Scroll feel

Lenis

Para scroll suave, sincronizado con ScrollTrigger y escenas WebGL. Se usa cuando el sitio necesita sensación premium, no por defecto en herramientas densas.

smooth raf sync parallax
Vector

Rive

Para logos vivos, loaders, botones con estado, ilustraciones UI y microinteracciones con state machines. Debe sentirse producto, no video decorativo.

state machine canvas runtime
3D

Three.js / React Three Fiber

Para WebGL, shaders, partículas, productos flotando, espacios inmersivos y escenas tipo keynote. React Three Fiber se usa cuando el 3D vive dentro de React.

WebGL shaders R3F
1. Tokens
Color, tipo, glass, radios y easing antes de animar.
2. Layout
Secciones en Next, motion solo en client components.
3. Motion
GSAP para revelar, ordenar y conectar scroll.
4. Interacción
Rive para vectores; Three/R3F para escenas 3D.
5. QA
Reduce motion, performance, responsive y foco visible.
Caso Stack Criterio
Hero editorial GSAP + SplitText + Lenis Titulares por línea, entrada precisa y scroll con sensación premium.
Scroll storytelling ScrollTrigger Pin, scrub, snap, parallax y estados que cambian al avanzar.
Microinteracción vectorial Rive Iconos, loaders, botones, mascota de producto o feedback con state machine.
Producto o espacio 3D Three.js / React Three Fiber Objeto flotante, partículas, shaders, canvas interactivo o WiwoSurface.
Dashboard operativo Next.js + CSS motion Animación breve para estados; nada que estorbe el trabajo repetitivo.

Instalación base

Crear el proyecto en Next.js y agregar solo las capas que el caso necesite. Rive y Three deben cargarse diferido si no son primera pantalla.

npx create-next-app@latest wiwo-surface --ts --app --tailwind
cd wiwo-surface
npm install lucide-react gsap @gsap/react lenis @rive-app/react-canvas three @react-three/fiber @react-three/drei

MotionShell client

Plantilla para sincronizar Lenis con ScrollTrigger y dejar SplitText dentro de un scope controlado.

"use client";

import { useRef } from "react";
import gsap from "gsap";
import { useGSAP } from "@gsap/react";
import { ScrollTrigger } from "gsap/ScrollTrigger";
import { SplitText } from "gsap/SplitText";
import Lenis from "lenis";

gsap.registerPlugin(useGSAP, ScrollTrigger, SplitText);

export function MotionShell({ children }) {
  const scope = useRef(null);

  useGSAP(() => {
    if (window.matchMedia("(prefers-reduced-motion: reduce)").matches) return;
    const title = scope.current?.querySelector("[data-split]");
    if (!title) return;

    const lenis = new Lenis({ lerp: 0.08, smoothWheel: true });
    const tick = (time) => lenis.raf(time * 1000);
    lenis.on("scroll", ScrollTrigger.update);
    gsap.ticker.add(tick);
    gsap.ticker.lagSmoothing(0);

    const split = SplitText.create(title, {
      type: "lines,words",
      mask: "lines",
      autoSplit: true
    });

    gsap.from(split.words, {
      yPercent: 110,
      opacity: 0,
      stagger: 0.018,
      duration: 0.72,
      ease: "power3.out",
      scrollTrigger: { trigger: title, start: "top 78%" }
    });

    return () => {
      split.revert();
      gsap.ticker.remove(tick);
      lenis.destroy();
    };
  }, { scope });

  return <main ref={scope}>{children}</main>;
}

Reglas de implementación

  • Motion con propósito. Revela jerarquía, confirma acción o conecta una historia. Si solo adorna, sale.
  • Client boundary limpio. GSAP, Rive y Three viven en componentes client; contenido y data pueden seguir en server components.
  • Lenis sincronizado. Si hay smooth scroll, conecta RAF con ScrollTrigger y prueba pinning, anchors y teclado.
  • 3D solo cuando aporta. Three.js / R3F se usa para escenas, producto, partículas o shaders. Para íconos y estados, Rive.
  • Accesibilidad primero. Respeta reduced motion, evita texto ilegible durante animaciones y mantiene foco visible.

Motion specs

Instrucciones avanzadas para que Wiwo se sienta como experiencia de marca premium: microinteracciones, scroll cinematográfico, texto preciso, vectores vivos y 3D solo cuando aporta.

Motion con sistema.

La animación se diseña como arquitectura: timeline, triggers, estados, performance y salida accesible. No son adornos; son feedback, jerarquía y dirección.

160msmicro feedback 0.72sreveal editorial 60fpscanvas / WebGL
ScrollTrigger scrub Pin + progress + parallax sincronizado.
SplitText stagger mask lines words
Hover
Loading
Success
GSAP

Microinteracciones

Usa timelines cortos para hover, press, success, menú y cards. El movimiento debe responder al input con magnetismo suave, spotlight y retorno elástico.

pointer spotlight spring
ScrollTrigger

Scroll narrativo

Para piezas de marca: usa `pin`, `scrub`, `snap`, timeline maestro y labels. Cada bloque debe tener una razón narrativa para quedarse fijo.

pin scrub labels
SplitText

Texto de precisión

Usa SplitText para líneas/palabras con mask. Recalcula split en resize, foco en legibilidad y fallback sin animación cuando reduced motion esté activo.

mask stagger resize
Rive

State machines UI

Rive entra cuando necesitas vectores con estados: idle, hover, loading, success, error. Ideal para logo vivo, íconos de producto y loaders con input real.

inputs states canvas
Three/R3F

WebGL expresivo

Three.js / R3F solo para escenas inmersivas, shaders, partículas o producto 3D. Si es decoración plana, usa CSS/GSAP; si es espacio, usa WebGL.

shader particles scene
Patrón Librería Implementación Duración
Hero reveal GSAP + SplitText Split por lines/words, mask, stagger 0.018, ease power3, imagen con parallax leve. 0.72s
Scroll story ScrollTrigger + Lenis Timeline con labels, `pin: true`, `scrub: 0.8`, refresh en resize y anchors testeados. scroll
Card magnetic GSAP Pointer tracking, rotateX/rotateY menor a 4deg, spotlight radial y retorno a cero. 160ms
Loader vivo Rive State machine con inputs `isLoading`, `isSuccess`, `hasError`; fallback SVG estático. loop
WiwoSurface R3F + Drei Canvas dinámico, shader de superficie, particles instanced, DPR limitado y lazy loading. 60fps

GSAP timeline pro

Patrón base para hero, SplitText, ScrollTrigger y Lenis sincronizado en Next.js.

"use client";

import { useRef } from "react";
import gsap from "gsap";
import { useGSAP } from "@gsap/react";
import { ScrollTrigger } from "gsap/ScrollTrigger";
import { SplitText } from "gsap/SplitText";
import Lenis from "lenis";

gsap.registerPlugin(useGSAP, ScrollTrigger, SplitText);

export function WiwoMotionPage({ children }) {
  const scope = useRef(null);

  useGSAP(() => {
    const reduce = window.matchMedia("(prefers-reduced-motion: reduce)").matches;
    if (reduce) return;
    const hero = scope.current?.querySelector("[data-motion-hero]");
    const title = scope.current?.querySelector("[data-hero-title]");
    if (!hero || !title) return;

    const lenis = new Lenis({ lerp: 0.08, smoothWheel: true });
    const raf = (time) => lenis.raf(time * 1000);
    lenis.on("scroll", ScrollTrigger.update);
    gsap.ticker.add(raf);
    gsap.ticker.lagSmoothing(0);

    const split = SplitText.create(title, {
      type: "lines,words",
      mask: "lines",
      autoSplit: true
    });

    const tl = gsap.timeline({
      defaults: { ease: "power3.out" },
      scrollTrigger: {
        trigger: hero,
        start: "top 78%",
        end: "bottom 20%",
        scrub: 0.8
      }
    });

    tl.from(split.words, { yPercent: 110, opacity: 0, stagger: 0.018, duration: 0.72 })
      .from(gsap.utils.toArray("[data-motion-card]", scope.current), { y: 42, opacity: 0, stagger: 0.08, duration: 0.6 }, "-=0.35")
      .to(gsap.utils.toArray("[data-parallax]", scope.current), { yPercent: -12, ease: "none" }, 0);

    return () => {
      split.revert();
      gsap.ticker.remove(raf);
      lenis.destroy();
    };
  }, { scope });

  return <main ref={scope} data-motion-page>{children}</main>;
}

Rive + Three según caso

Rive para estados vectoriales; R3F cuando la experiencia necesita canvas 3D real.

"use client";

// Rive: UI state machine
import { useEffect, useState } from "react";
import { useRive, useStateMachineInput } from "@rive-app/react-canvas";
import { Canvas } from "@react-three/fiber";
import { Float, Environment } from "@react-three/drei";

export function WiwoRiveButton() {
  const { RiveComponent, rive } = useRive({
    src: "/rive/wiwo-button.riv",
    stateMachines: "Button",
    autoplay: true
  });

  const hover = useStateMachineInput(rive, "Button", "isHover");
  const setHover = (value) => {
    if (hover) hover.value = value;
  };

  return (
    <button
      className="wiwo-icon-button"
      type="button"
      aria-label="Activar flujo Wiwo"
      onPointerEnter={() => setHover(true)}
      onPointerLeave={() => setHover(false)}
    >
      <RiveComponent aria-hidden="true" />
    </button>
  );
}

// React Three Fiber: WiwoSurface scene
function readToken(name) {
  return getComputedStyle(document.documentElement).getPropertyValue(name).trim();
}

export function WiwoSurface() {
  const [tokens, setTokens] = useState(null);

  useEffect(() => {
    setTokens({
      blue: readToken("--wiwo-blue"),
      green: readToken("--wiwo-green")
    });
  }, []);

  if (!tokens) return null;

  return (
    <Canvas dpr={[1, 1.5]} camera={{ position: [0, 0, 5], fov: 38 }}>
      <Environment preset="city" />
      <Float speed={1.2} rotationIntensity={0.35} floatIntensity={0.6}>
        <mesh>
          <torusKnotGeometry args={[1, 0.28, 180, 24]} />
          <meshPhysicalMaterial
            color={tokens.blue}
            emissive={tokens.green}
            emissiveIntensity={0.18}
            roughness={0.38}
            metalness={0.04}
            clearcoat={0.72}
          />
        </mesh>
      </Float>
    </Canvas>
  );
}

Patrones

Reglas para que el sistema sirva tanto en landings como en dashboards, documentos, decks y herramientas internas.

Grilla maestra

Todo layout estratégico parte de 12 columnas en desktop. Las composiciones permitidas son 3/9, 4/8, 5/7 y 6/6; cualquier otro split debe responder a una necesidad funcional clara.

  • Desktop: 12 columnas con gutter --space-5.
  • Tablet: mantiene proporción hasta que el contenido pida colapso.
  • Mobile: una columna visual y navegación compacta.
  • Cards: auto-fit + minmax(260px, 1fr).

Medidas de lectura

La tipografía no se controla solo por tamaño: también por ancho de línea. Estos tokens evitan títulos cortados, párrafos eternos y UI apretada.

  • --measure-display: 12ch para titulares.
  • --measure-lead: 36ch para bajadas.
  • --measure-body: 62ch para lectura larga.
  • No forzar cortes con guiones manuales.

Layout editorial

Usar cuando Wiwo explica una idea: casos, reportes, pensamiento, manifiestos y piezas para LinkedIn.

  • Titular de 8 a 12 palabras máximo.
  • Grilla de 12 columnas en desktop, 4 en mobile.
  • Imagen o arte como evidencia, no como relleno.
  • Chips solo para categoría, fecha o estado.

Layout operativo

Usar cuando el usuario viene a trabajar: CRM, automatizaciones, brief builder, tableros y sistemas de seguimiento.

  • Navegación persistente y densa.
  • Acción primaria siempre visible arriba o abajo.
  • Estados con texto, icono y color.
  • Evitar secciones hero si la tarea es repetitiva.
05 Implementación

Reglas listas para construir.

Instrucciones, CSS base y archivos generados para que diseño, frontend y Figma trabajen desde el mismo origen.

Instrucciones

Cómo aplicar el sistema sin romper la marca ni convertirlo en una copia literal de ningún lenguaje externo.

  1. Parte por tokens. Define color, tipografía, radio, spacing y motion antes de dibujar pantallas. Si una decisión no cabe en tokens, probablemente es una excepción de campaña.
  2. Tokens como código. Cambia valores en tokens/wiwo.tokens.json y ejecuta npm run build:tokens. CSS, Tailwind y variables Figma son outputs, no fuente editorial.
  3. El modo oscuro exige cobertura completa. Actívalo solo cuando superficies, texto, líneas, controles, imágenes y estados hayan pasado contraste y QA. No mezcles cards oscuras aisladas dentro de una experiencia clara.
  4. Elige el modo. Editorial para contar, operativo para ejecutar. No mezcles un hero gigante dentro de una herramienta de trabajo.
  5. Usa tácticas Wiwo Expressive. Aumenta jerarquía con tamaño, forma, contención tonal, grupos conectados y motion. No dependas solo del color.
  6. Usa fotos como evidencia humana. Prioriza escenas con personas, vínculos, oficio, cuidado y vida cotidiana, con beige dominante y acentos Wiwo integrados. No uses cyber city, cyborgs, sci-fi frío ni tecnología lejana: la capacidad debe sentirse humana, actual y reconocible.
  7. Lucide es la biblioteca de íconos base. Importa desde lucide react, usa SVG con currentColor, stroke 2px, tamaños 18/20/24/32 y aria label solo cuando el ícono sea el único contenido del control.
  8. Controla contraste. Usa la tabla de pares aprobados: verde solo con #292929, azul con blanco o beige, y gradientes solo con overlay, glass o contenedor estable.
  9. Anima por significado. Motion para confirmar, ordenar, revelar o guiar. Duración recomendada: 160ms micro, 280ms paneles, 420ms transiciones expresivas.
  10. Accesibilidad como estilo. Implementa :focus-visible, labels persistentes, aria-invalid con texto específico y estados disabled/loading/error que se entiendan sin depender del color.

CSS base

Snippet de consumo. Los valores salen de tokens/wiwo.tokens.json y se importan desde el CSS generado.

/* 1. Fuente única: outputs/tokens/wiwo.tokens.json */
/* 2. Build: npm run build:tokens */
/* 3. Consumo web */
@import "./tokens/wiwo.tokens.css";

html {
  font-family: var(--font-system);
  background: var(--surface);
  color: var(--ink);
}

body {
  margin: 0;
  background: var(--surface);
  color: var(--ink);
  font-family: var(--font-system);
  text-rendering: optimizeLegibility;
}

:where(a, button, input, select, textarea, summary):focus-visible {
  outline: 3px solid var(--focus-ring);
  outline-offset: 3px;
  box-shadow: 0 0 0 7px var(--focus-glow);
}

.wiwo-button-primary {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  min-height: 48px;
  padding: 0 var(--space-5);
  border-radius: var(--radius-control);
  border: 1px solid var(--wiwo-green);
  background: var(--wiwo-green);
  color: var(--on-accent);
  font-family: var(--font-system);
  font-size: 1rem;
  font-weight: var(--weight-action);
  transition:
    transform var(--motion-fast) var(--ease-expressive),
    box-shadow var(--motion-fast) var(--ease-expressive),
    background var(--motion-fast) var(--ease-expressive);
}

.wiwo-button-primary:hover:not(:disabled) {
  transform: translateY(-1px);
  box-shadow: var(--shadow-1);
}

.wiwo-button-primary:disabled,
.wiwo-input:disabled {
  cursor: not-allowed;
  opacity: var(--disabled-opacity);
}

.wiwo-button-primary[data-loading="true"] {
  pointer-events: none;
  color: transparent;
}

.wiwo-button-primary[data-loading="true"]::after {
  content: "";
  width: var(--icon-size-md);
  height: var(--icon-size-md);
  border: 2px solid currentColor;
  border-top-color: transparent;
  border-radius: var(--shape-full);
  color: var(--on-accent);
  animation: wiwo-spin var(--motion-loop) linear infinite;
}

.wiwo-card {
  border: 1px solid var(--line);
  border-radius: var(--radius-card);
  background: var(--surface);
  color: var(--ink);
  padding: var(--space-5);
}

.wiwo-card[data-variant="inverse"] {
  background: var(--surface-inverse);
  color: var(--ink-inverse);
}

.wiwo-glass {
  border: 1px solid var(--glass-stroke);
  border-radius: var(--shape-lg);
  background: var(--glass-fill);
  box-shadow: var(--shadow-glass);
  backdrop-filter: blur(var(--glass-blur)) saturate(1.28);
}

.wiwo-gradient-band {
  min-height: 96px;
  border-radius: var(--radius-card);
  background: var(--wiwo-gradient-primary);
  background-size: 180% 180%;
  animation: wiwo-gradient var(--motion-loop) var(--ease-emphasized) infinite alternate;
}

.wiwo-icon {
  width: var(--icon-size-md);
  height: var(--icon-size-md);
  color: currentColor;
  stroke-width: var(--icon-stroke);
}

.wiwo-icon-button {
  inline-size: 44px;
  block-size: 44px;
  display: inline-grid;
  place-items: center;
  border: 1px solid var(--line);
  border-radius: var(--shape-full);
  background: var(--control-surface);
  color: var(--ink);
}

.wiwo-input {
  min-height: 48px;
  border: 1px solid var(--line);
  border-radius: var(--shape-xs);
  background: var(--surface);
  color: var(--ink);
  padding: 0 var(--space-4);
  font: inherit;
}

.wiwo-input[aria-invalid="true"] {
  border-color: var(--error);
  background: var(--error-soft);
}

.wiwo-field-error {
  margin-block-start: var(--space-2);
  color: var(--error);
  font-size: var(--step--1);
  font-weight: var(--weight-meta);
}

.wiwo-connected-group {
  display: inline-flex;
  gap: var(--space-1);
  padding: var(--space-1);
  border-radius: var(--shape-full);
  overflow: hidden;
  background: var(--surface-container);
}

.wiwo-connected-group button {
  min-height: 52px;
  padding: 0 var(--space-4);
  border: 0;
  border-radius: var(--shape-full);
  background: transparent;
  color: var(--muted);
  font: inherit;
  font-weight: var(--weight-nav);
  transition: background var(--motion-fast), color var(--motion-fast);
}

.wiwo-connected-group button[aria-selected="true"] {
  background: var(--surface-inverse);
  color: var(--ink-inverse);
}

@keyframes wiwo-spin {
  to { transform: rotate(1turn); }
}

@keyframes wiwo-gradient {
  to { background-position: 100% 50%; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    scroll-behavior: auto !important;
    transition-duration: .001ms !important;
  }
}