From bd14ae5f299f3991c5c183822fcc22c96761617e Mon Sep 17 00:00:00 2001 From: erikgh Date: Mon, 3 Aug 2026 15:54:59 -0600 Subject: [PATCH] =?UTF-8?q?feat(hero):=20el=20hero=20pasa=20a=20azul=20pro?= =?UTF-8?q?fundo,=20con=20toda=20su=20capa=20gr=C3=A1fica?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fondo azul, wordmark en negativo con el ≡ dorado, titular en blanco manteniendo «más esfuerzo» y el subrayado de «más claridad» en dorado, la secuencia de líneas al 70% de blanco y el campo de puntos invertido. CTA gana una variante `ghostDark`. Los nombres de las variantes dicen sobre qué fondo se apoya el botón, no de qué color es: `light` y `ghost` son para secciones claras, `dark` y `ghostDark` para azul profundo. Dejar el hero con `light` habría pintado azul sobre azul. El header no se toca: ya flota como barra blanca sobre FraseAncla, Mecanismo y Cierre, así que sobre el hero hace lo que ya hacía en media página. Co-Authored-By: Claude Opus 5 --- components/primitives/CTA.tsx | 6 +++++- components/sections/Hero.tsx | 14 +++++++------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/components/primitives/CTA.tsx b/components/primitives/CTA.tsx index a09ecda..2299567 100644 --- a/components/primitives/CTA.tsx +++ b/components/primitives/CTA.tsx @@ -1,10 +1,14 @@ -type Variant = 'light' | 'dark' | 'ghost'; +// The names say which ground the button is standing on, not what colour it is: +// `light` and `ghost` are for light sections, `dark` and `ghostDark` for +// azul-profundo. Getting that backwards paints navy on navy. +type Variant = 'light' | 'dark' | 'ghost' | 'ghostDark'; // Every variant carries border-2 so filled and outlined CTAs line up when // they sit side by side. const styles: Record = { light: 'border-2 border-transparent bg-azul-profundo text-white hover:bg-azul-profundo/90', dark: 'border-2 border-transparent bg-dorado text-white hover:bg-dorado/90', ghost: 'border-2 border-azul-profundo text-azul-profundo hover:bg-azul-profundo hover:text-white', + ghostDark: 'border-2 border-white/45 text-white hover:bg-white hover:text-azul-profundo', }; export function CTA({ href, label, variant = 'light', className = '' }: { href: string; label: string; variant?: Variant; className?: string }) { diff --git a/components/sections/Hero.tsx b/components/sections/Hero.tsx index 0668906..f1fcfd4 100644 --- a/components/sections/Hero.tsx +++ b/components/sections/Hero.tsx @@ -22,21 +22,21 @@ export function Hero({ variant = 'editorial' }: { variant?: Variant }) { const clarityBorder = isHormozi ? 'border-b-[5px] border-dorado pb-0.5' : 'border-b-[3px] border-dorado pb-0.5'; return ( -
+
{/* Kept clear of the wordmark on narrow screens: at 390px the md field reached back across the logotype and the tagline, so the pattern read as collision rather than texture. */} - +
- + {hero.eyebrow} - + - - + + {/* Complexity → focus, left unresolved: the hero poses the tension @@ -61,7 +61,7 @@ export function Hero({ variant = 'editorial' }: { variant?: Variant }) { of the brand's own graphic language at all. */} - +