diff --git a/docs/superpowers/specs/2026-07-21-creeer-landing-additions-design.md b/docs/superpowers/specs/2026-07-21-creeer-landing-additions-design.md new file mode 100644 index 0000000..c9a6188 --- /dev/null +++ b/docs/superpowers/specs/2026-07-21-creeer-landing-additions-design.md @@ -0,0 +1,157 @@ +# creeer Landing — Additions: Header + Cómo empezar + Footer + +**Date:** 2026-07-21 +**Branch:** `feat/header-comoempezar-footer` +**Builds on:** `docs/superpowers/specs/2026-07-20-creeer-landing-design.md` (original 7-section landing, already implemented). + +## Goal + +Complete the page's structural chrome and its conversion on-ramp by adding three pieces to the existing one-page landing: + +1. A minimal sticky **Header** (wordmark + persistent CTA). +2. A new **"Cómo empezar"** section (3 client-facing steps ending in a direct WhatsApp link). +3. A slim **Footer**. + +No new architecture: these reuse the existing primitives, tokens, motion pattern, and content-in-`lib/content.ts` convention. Still a statically-exported Next.js 14 site — no backend, no forms, contact via direct links only. + +## Global constraints (inherited — apply to every piece here) + +- **Wordmark** always lowercase `creeer.`, rendered via the shared `Wordmark` primitive (never re-implemented, never uppercased). +- **Paleta (tokens):** `ink #0A1F44` · `gold #B8901f` (accents on LIGHT) · `gold-bright #D4AF37` (accents on DARK) · `base #FBFAF7` (light bg) · `cream #F5EBD0` (text on dark) · `muted`/`muted-dark`. +- **Tipografía híbrida:** Georgia italic = voz de marca (wordmark + citas + títulos de sección); Inter = body/UI. +- **Sin backend, sin formularios** — contacto solo por enlaces directos (WhatsApp/mailto/LinkedIn). +- **Un único `

`** en toda la página — vive en el Hero. New pieces use `

`/`

` or no heading; Header/Footer carry no heading. +- **Todo el copy** vive en `lib/content.ts` (nuevas claves `comoEmpezar` y `footer`). +- **Voz** en segunda persona, sin jerga corporativa. **Idioma** español. +- **Todas las animaciones Framer Motion** se desactivan con `prefers-reduced-motion` via `usePrefersReducedMotion()` + `motionProps(reduced)` (same pattern the 7 sections already use). +- **`output: export`** — el build estático debe seguir produciendo `out/`. + +## File structure (additions) + +``` +components/ +├── layout/ +│ ├── Header.tsx # NEW — sticky bar (server component, pure CSS sticky) +│ ├── Footer.tsx # NEW — slim footer strip +│ └── __tests__/ +│ ├── Header.test.tsx # NEW +│ └── Footer.test.tsx # NEW +└── sections/ + ├── ComoEmpezar.tsx # NEW — section 07 (client component, motion pattern) + └── __tests__/ + └── ComoEmpezar.test.tsx # NEW +lib/content.ts # ADD `comoEmpezar` and `footer` keys +app/page.tsx # compose Header + ComoEmpezar + Footer +``` + +## Component 1 — Header (minimal sticky) + +**Interface:** `Header()` at `components/layout/Header.tsx`. No props. Server component (no state, no JS — `position: sticky` is pure CSS). + +**Layout & style:** +- `
` with `sticky top-0 z-50`, light background (`bg-base/80` or `bg-pure/80`) + `backdrop-blur` + a subtle bottom border (`border-b border-ink/10`). The light bar stays legible while scrolling over both light and dark sections. +- A `Container`-width inner row, `flex items-center justify-between`, vertical padding ~`py-3`/`py-4`. +- **Left:** `` wrapped in an `` (or the page top) — the wordmark ink color is the default (dark on the light bar). +- **Right:** the `CTA` primitive, `variant="light"`, label from `cierre.cta` (`"Define tu siguiente movimiento"` + `→`), `href="#contacto"`. On small screens the CTA stays but may use a slightly smaller padding/label; the wordmark + CTA layout is identical on mobile (no menu, no hamburger). +- Semantic `
`; wrap the CTA link region in `