101 Commits
Author SHA1 Message Date
erikgh ca949f35c2 feat(para-quien): la bifurcación dibujada junto al split sí/no
La ruta del 'no' se revela por opacidad (no por pathLength): el stroke
dasharray '1 8' sobrevive y el camino queda realmente punteado, en lugar
de que framer-motion lo pise con el dasharray que usa para dibujar el
trazo. El test afina la aserción al valor '1 8' para no contar la
inyección de pathLength en las dos rutas sólidas.
2026-07-31 11:39:12 -06:00
erikgh 2fa1e73764 feat(dolores): el nudo que no se deshace 2026-07-31 11:25:59 -06:00
erikgh 0239d4ac15 fix(grafico): HiloConductor a la banda lateral, con stacking explícito
El hilo pintaba encima del texto en las secciones sin position:relative
(Dolores, Disciplinas, Estratega, ComoEmpezar) y detrás del texto en las
que sí la tienen, por el orden de pintado del navegador. Se mueve a la
banda vacía a la izquierda de la columna max-w-content (oculto bajo 2xl,
donde no hay margen seguro) y gana un z-index explícito por debajo del
header.
2026-07-31 11:25:34 -06:00
erikgh d6453ce197 feat(frase-ancla): la secuencia resuelve en el ≡ sobre la frase 2026-07-31 11:22:37 -06:00
erikgh a03b6c1f92 feat(hero): la metáfora de marca sustituye al carrusel de dolores 2026-07-31 11:16:46 -06:00
erikgh bd16de2aa3 fix(grafico): SecuenciaClaridad usa el grosor de su propia barra
Cada línea resuelta tomaba el grosor de LINEAS_SIMBOLO[0] sin importar a
qué barra pertenecía; funcionaba por coincidencia porque las tres barras
del manual comparten height: 8. Se indexa ahora por DISPERSAS[i].barra, y
se agrega una prueba de regresión que fija el grosor de cada línea al de
su propia barra (derivado de LINEAS_SIMBOLO, no hardcodeado).
2026-07-31 11:14:02 -06:00
erikgh a900bdd99d feat(grafico): HiloConductor — la línea dorada que cose la página 2026-07-31 11:09:59 -06:00
erikgh 6783e32324 feat(grafico): SecuenciaClaridad — la metáfora del manual, dibujada 2026-07-31 11:04:21 -06:00
erikgh 1b1b39c67f refactor(motion): extraer useEnVista, compartido por las ilustraciones 2026-07-31 10:58:22 -06:00
erikgh fcd58fe00d refactor(simbolo): extraer la geometría del ≡ a lib/simbolo.ts 2026-07-31 10:57:08 -06:00
erikghandClaude Opus 5 e76c492c3f docs(plan): extraer useEnVista antes de escribir las ilustraciones
El scan previo a la ejecución encontró que el plan mandaba repetir el
bloque del IntersectionObserver en las cuatro ilustraciones nuevas, sobre
las dos copias que ya existen. Se añade la Task 1b, que lo extrae a un
hook y migra las dos existentes.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-31 10:54:51 -06:00
erikghandClaude Opus 5 9d544a3ebb docs(plan): implementación del hilo conductor en 12 tareas
Cada tarea trae test primero, código completo y commit propio.

En el self-review salieron tres cosas que se corrigieron en el plan: el
spread de las líneas dispersas mandaba `barra` al DOM como atributo SVG
inválido; el paso de parallax decía "mismo tratamiento para Mecanismo" en
vez de mostrar el código (FondoFoto no acepta style, necesita envoltorio);
y el compactado del header que pide el spec no tenía tarea asignada.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-31 10:51:57 -06:00
erikghandClaude Opus 5 e6896d204a docs(spec): el hilo conductor — sistema visual, ilustración y movimiento
Diseño aprobado para la siguiente tanda visual, en respuesta al mensaje de
la dueña del 30/jul ("sólo le falta algo de gráfico y movimiento").

Concepto rector: una línea dorada continua atraviesa la landing y se
dibuja con el scroll, cosiendo las secciones y resolviendo en el ≡ del
wordmark. Aporta ilustración, movimiento y continuidad de una sola vez.

Además, rebalancea el movimiento existente en vez de sumarle encima: sale
el carrusel del hero (duplica la sección Dolores), sale el autoplay
repetido de Cómo empezar, y sale el opacity-40 que hoy deja ilegibles dos
de cada tres pasos.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-31 10:45:07 -06:00
erikghandClaude Opus 5 69b4069525 feat(secciones): puntos de inflexión y dolores, con gráfico en toda la página
Dos secciones nuevas tomadas del deck de la dueña, verbatim y sin
reescribir: los 6 puntos de inflexión y los 4 dolores en primera persona.

El resto de las secciones incorpora la capa gráfica: fondos de puntos,
duotono sobre foto en Mecanismo y Cómo empezar, pantalla partida sí/no en
Para quién, y pasos conectados con línea de progreso.

Las fotos son CC BY-SA 4.0 y llevan crédito en el footer, como exige la
licencia al haberlas modificado.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-31 10:44:54 -06:00
erikghandClaude Opus 5 5b400cb161 feat(primitivas): capa gráfica y de movimiento reutilizable
Diez primitivas que dan a la landing el "gráfico y movimiento" que pidió
la dueña, todas con guarda de prefers-reduced-motion:

- FondoPuntos / PatronPuntos — el patrón de puntos del manual
- TarjetaSpotlight, TextoDesenfoque, ContadorNumero — realce y reveal
- Carrusel — deslizable, con contador, autoplay pausable
- Icono, SimboloTresLineas, IlustracionInflexion — línea, sin relleno
- FondoFoto — duotono azul/dorado sobre foto

useAutoStep en lib/motion.ts comparte la forma del autoplay del carrusel
para indicadores de paso que no son carrusel.

IlustracionInflexion documenta un detalle que muerde: motion.path aplica
su propio andamiaje de dasharray aunque no reciba initial/animate, así
que la rama de reduced motion renderiza <path> planos en vez de intentar
neutralizar los animados.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-31 10:44:28 -06:00
erikghandClaude Opus 5 a9758a92f9 feat(identidad): logos SVG oficiales, wordmark trazado y tokens del manual
El wordmark deja de depender del glifo tipográfico ≡ y pasa a un trazado
SVG propio (SimboloTresLineas), que es lo que permite cumplir la
instrucción de la dueña: que se lea como E, no como tres líneas sueltas.

Incluye las tres versiones del logotipo (principal, negativa, secundaria)
y alinea los tokens de color con el Manual de Identidad Visual v1.0.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-31 10:44:20 -06:00
erikghandClaude Opus 5 edf921eae7 docs: manual de identidad v1.0, deck de la dueña y directrices al día
Incorpora los mensajes verbatim del 28–30/jul (tipografía Open Sans, el ≡
que debe leerse como E, "claridad estratégica" como oferta, estructura de
en-ti.com) y el material del deck "Rumbo Estratégico": los 6 puntos de
inflexión y los 4 dolores en primera persona.

Corrige Azul Profundo a #0A1D3D según el manual, y añade CLAUDE.md.

Quedan abiertas dos preguntas para la dueña, anotadas en el doc: si el ≡
lleva espina vertical, y si la "Generación Fundadora" puede vivir fuera
del hero.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-31 10:44:13 -06:00
erikghandClaude Opus 5 7bfab50c13 chore(git): ignorar settings locales de Claude Code
settings.local.json es configuración por máquina; .claude/skills/ sí se
comparte porque react-doctor es parte del flujo del proyecto.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-31 10:44:06 -06:00
erikgh 09dedad6ae feat: tipografía Open Sans (reemplaza Inter)
Aptos descartada para web: su EULA (Microsoft) prohíbe distribuirla o
servirla públicamente. Open Sans (OFL) es la open-source más cercana —
comparte diseñador con Aptos (Steve Matteson). Cargada vía next/font/google,
autoalojada en el build estático (cero requests externos en runtime).

- app/layout.tsx: Inter → Open_Sans (pesos 400/600/700/800 + itálicas)
- tailwind.config.ts: sans → var(--font-open-sans); token 'narrow' eliminado
- app/globals.css: body font-family
- docs (AGENTS, dueña-directrices, spec): Open Sans documentado,
  decisión registrada (28/jul/2026)

Typecheck, lint, 27/27 tests y build verdes.
2026-07-28 11:56:05 -06:00
erikgh 9888e93640 feat: favicon cre≡er (≡ en dorado sobre Azul Profundo)
Reemplaza el favicon viejo (e. en navy+gold-bright, Georgia) por el símbolo
≡ (tres líneas) en Dorado #C4942E sobre Azul Profundo #0A1D5D, según la
versión 'Ícono' del Manual de Identidad Visual v1.0.
2026-07-28 11:55:59 -06:00
erikgh 60d3f22e6b feat: rebrand a Manual de Identidad Visual v1.0
Migra todo el sitio a la marca oficial aprobada por la dueña:
- Logotipo cre≡er (el símbolo ≡ reemplaza la 'e' central, en dorado)
- Paleta: Azul Profundo #0A1D5D + Dorado Estratégico #C4942E + Blanco + neutros
- Tipografía: Aptos (Inter como fallback web), fin del sistema híbrido Georgia/Inter
- Tagline 'CLARIDAD · DIRECCIÓN · CRECIMIENTO' + eslogan 'Estrategia que transforma.'

Componentes, tokens de Tailwind, lib/content.ts, docs (dueña-directrices + spec)
y tests actualizados. Typecheck, lint, 27/27 tests y build estática verdes.

Basado en docs/branding.jpeg (Manual v1.0, mayo 2026).
2026-07-28 10:51:48 -06:00
erikgh 8fdfc1be5c Revert "feat: BenditaRed-inspired concepts adapted to creeer tokens"
This reverts commit cb4097a76a.
2026-07-22 10:41:22 -06:00
erikghandClaude Fable 5 cb4097a76a feat: BenditaRed-inspired concepts adapted to creeer tokens
- Hero: subtle ink grid texture (radial-masked) + gold glow blob
- Hero kicker: small gold dot before the eyebrow
- Header: desktop anchor nav (Método/Disciplinas/La estratega) with
  scroll-elevation shadow; mobile keeps wordmark + CTA only
- Sections gain ids + scroll-mt-24 as anchor targets
- CTA: subtle hover lift, gated with motion-reduce

Concepts studied from ~/dev/BenditaRed (grid+glow hero background,
kicker-with-dot, scrolled navbar state, pill hover lift). Animated
stats were skipped — no real metrics from the owner to show.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 10:39:58 -06:00
erikghandClaude Fable 5 b810e5f6de feat: branded favicon (e.) and og-image with wordmark
Replaces the default Next favicon.ico and the solid-navy og-image
placeholder. All generated from the brand tokens (ink bg, gold-bright
accents, Georgia italic):
- app/icon.svg — vector favicon "e." for modern browsers
- app/favicon.ico — 48/32/16 raster fallback
- app/apple-icon.png — 180x180 apple-touch-icon (auto-linked by Next)
- public/og-image.png — 1200x630 wordmark + tagline for link previews

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 10:33:17 -06:00
erikghandClaude Fable 5 43644355ea feat: hover micro-interactions on cards, steps and CTA arrow
Disciplinas cards and Mecanismo/ComoEmpezar steps get a subtle lift +
border intensify on hover; the CTA arrow slides right. All gated with
motion-reduce so prefers-reduced-motion users see no movement.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 10:30:32 -06:00
erikghandClaude Fable 5 683df7eb4a copy: reword ComoEmpezar step 03 to 'Plan en mano'
'Estrategia ejecutable' appeared verbatim as step 03 in both Mecanismo
(her method) and ComoEmpezar (client on-ramp), reading repetitive on
scroll. Mecanismo keeps the term; the on-ramp now names the client
outcome.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 10:29:27 -06:00
erikghandClaude Opus 4.8 501555ec0e docs: AGENTS.md commands to pnpm (no npm)
Last leftover npm reference after the pnpm migration (3f0a15e);
README.md was already migrated. Also states pnpm as the required
package manager.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-22 10:13:52 -06:00
erikgh b3bd698e9b fix: a11y (gold-deep token AA, Disciplinas ul/li, Cierre nav) + scaffold cleanup
- Add gold-deep #7A5F15 token (~5.97:1 on white, WCAG AA) for small-text eyebrows
- Apply text-gold-deep to 4 eyebrows (Hero, Disciplinas, ComoEmpezar, Estratega)
- Disciplinas: div grid → semantic ul/li for screen-reader consistency
- Cierre: wrap contact links in <nav aria-label="Contacto">
- Estratega: portrait gradient → Tailwind tokens (from-ink to-gold), drop inline hex
- Delete unused Geist fonts (app/fonts/, ~134KB)
- Replace default README with creeer README
- Tests: +2 structural (Disciplinas ul/li, Cierre nav aria-label)
2026-07-22 10:06:46 -06:00
erikgh 3f0a15eac9 chore: migrate from npm to pnpm
- Replace package-lock.json with pnpm-lock.yaml (pnpm 11.7.0)
- Add packageManager field to package.json
- Add pnpm-workspace.yaml with approved build scripts (esbuild, unrs-resolver)
- Verified: 25/25 tests pass, lint clean, static build OK
2026-07-22 09:55:45 -06:00
erikgh 9278f3eae1 fix: scroll-margin on #contacto so the sticky header never overlaps it 2026-07-21 15:56:29 -06:00
erikgh 0c74cd54a3 feat: slim Footer strip with wordmark, tagline and legal line 2026-07-21 15:50:36 -06:00
erikghandClaude Opus 4.8 7d27c91cf7 feat: Cómo empezar section (07) — 3-step on-ramp to WhatsApp
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 15:45:30 -06:00
erikgh d8921bc0bc feat: sticky Header with persistent contact CTA 2026-07-21 15:42:13 -06:00
erikgh 50f62bdf28 docs: implementation plan for landing additions (+ short header CTA in spec) 2026-07-21 15:37:51 -06:00
erikgh 4f73312526 docs: design spec for Header + Cómo empezar + Footer additions 2026-07-21 15:31:55 -06:00
erikgh 421576a5b7 fix: disable smooth scroll under reduced motion; drop dead motion exports 2026-07-21 12:17:29 -06:00
erikgh 7d9e31aa52 fix: escape Cierre quotes, commit eslint deps, restore build lint gate 2026-07-21 11:57:03 -06:00
erikgh 556f716583 feat: SEO metadata, JSON-LD, OG image, sitemap, a11y focus styles
Expands app/layout.tsx metadata (openGraph, twitter, canonical),
adds ProfessionalService JSON-LD to app/page.tsx, focus-visible
styles in globals.css, robots.txt/sitemap.xml, and a placeholder
og-image.png (navy background, no wordmark text — needs a real
design asset before launch).

Also adds .eslintrc.json (next/core-web-vitals) so next lint runs
non-interactively, and decouples ESLint from next build via
next.config.mjs (eslint.ignoreDuringBuilds) so a pre-existing,
out-of-scope lint issue in Cierre.tsx doesn't block the static
export.
2026-07-21 11:50:24 -06:00
erikgh e98adf5b08 feat: compose page + Framer Motion animations + reduced-motion support 2026-07-21 11:31:27 -06:00
erikgh 8947a11e70 feat: Cierre section (07, dark) — closing quote + contact links 2026-07-21 11:20:06 -06:00
erikghandClaude Opus 4.8 532ce55558 feat: Estratega section (06) — portrait + bio + quote
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 11:13:38 -06:00
erikghandClaude Opus 4.8 729e06bdc8 feat: Disciplinas section (05) — pillars as tools
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 11:08:11 -06:00
erikgh a97718f43e feat: Mecanismo section (04, dark) — 3-step method 2026-07-21 10:32:19 -06:00
erikgh e380e9751a feat: ParaQuien section (03) — audience filter 2026-07-21 10:28:44 -06:00
erikgh d2fe1fcf64 feat: FraseAncla section (02) — anchor quote 2026-07-21 10:24:52 -06:00
erikgh ccfcf71491 feat: Hero section (01) with HV-1 hormozi + V-a editorial variants 2026-07-21 10:18:27 -06:00
erikgh d218b19655 fix: CTA light variant uses text-cream (text-base collides with Tailwind fontSize) 2026-07-21 10:14:47 -06:00
erikgh 7d12e35600 feat: primitives (Wordmark, Container, CTA) with tests 2026-07-21 10:10:14 -06:00
erikgh 48a37395aa feat: design tokens (palette, Inter font, content + motion libs) 2026-07-21 10:03:56 -06:00
erikgh f66687a545 chore: scaffold Next.js 14 + Tailwind + Framer Motion + Vitest 2026-07-21 09:58:28 -06:00