diff --git a/web/src/app/page.tsx b/web/src/app/page.tsx index a8c4c18cd6..a38ed8f0ca 100644 --- a/web/src/app/page.tsx +++ b/web/src/app/page.tsx @@ -106,7 +106,7 @@ export default function Home() {
diff --git a/web/src/components/IDEDemo.tsx b/web/src/components/IDEDemo.tsx index 97efcede3c..c69cc044ad 100644 --- a/web/src/components/IDEDemo.tsx +++ b/web/src/components/IDEDemo.tsx @@ -380,9 +380,9 @@ export function IDEDemo({ className }: IDEDemoProps) {
- - - Your favorite IDE + {' '} + + YOUR FAVORITE IDE
@@ -407,7 +407,7 @@ export function IDEDemo({ className }: IDEDemoProps) {
@@ -449,9 +449,8 @@ export function IDEDemo({ className }: IDEDemoProps) { )} -
- -
+
{' '} +
{terminalLines.length > 0 ? ( <> {terminalLines.map((line, index) => ( diff --git a/web/src/components/ui/hero.tsx b/web/src/components/ui/hero.tsx index 59f557fa28..9b78174383 100644 --- a/web/src/components/ui/hero.tsx +++ b/web/src/components/ui/hero.tsx @@ -4,7 +4,6 @@ import { motion } from 'framer-motion' import { useState, useEffect } from 'react' import { HeroButtons } from './hero-buttons' -import { Section } from './section' // Typing effect component for hero headline function TypingEffect({ words }: { words: string[] }) { @@ -60,63 +59,92 @@ function TypingEffect({ words }: { words: string[] }) { export function Hero() { return ( -
-
- + + - - - Supercharge - {' '} - Your{' '} - - AI Coding - - - + Supercharge + {' '} + + Your AI + {' '} + + Coding + + + - - Simple. Fast. Powerful.{' '} - - Codebuff works in your terminal. - - + + Simple. Fast. Powerful.{' '} + + Codebuff works in your terminal. + + - - - -
-
+ + + +
) } diff --git a/web/src/components/ui/section.tsx b/web/src/components/ui/section.tsx index fa23689cd9..f31c6b9cc2 100644 --- a/web/src/components/ui/section.tsx +++ b/web/src/components/ui/section.tsx @@ -55,10 +55,10 @@ export function Section({ return ( diff --git a/web/src/styles/globals.css b/web/src/styles/globals.css index b6f508ab37..3337517ac0 100644 --- a/web/src/styles/globals.css +++ b/web/src/styles/globals.css @@ -88,8 +88,14 @@ } .hero-heading { - @apply text-4xl md:text-5xl lg:text-6xl font-medium tracking-tight; + @apply text-4xl md:text-5xl lg:text-6xl xl:text-7xl font-medium; font-family: 'Domine', serif; + letter-spacing: 0.005em; + word-spacing: 0.005em; + /* Enable proper text shaping */ + font-kerning: normal; + font-feature-settings: "kern" 1, "liga" 1; + text-rendering: optimizeLegibility; } .hero-subtext { @@ -176,17 +182,32 @@ /* Ensure proper text wrapping in headings on mobile */ @media (max-width: 767px) { :where(h1, h2, h3, h4, h5, h6) { - /* Use flexbox for robust wrapping */ - display: inline-flex; - flex-wrap: wrap; - align-items: baseline; - line-height: 1; /* Minimal line spacing */ - gap: 0; /* Remove gap between items */ - margin-top: 0rem; /* Reduce top margin */ + /* Revert to normal text flow for proper kerning */ + display: block; + line-height: 1.2; + margin-top: 0rem; + /* Enable proper text shaping and kerning */ + font-kerning: normal; + font-feature-settings: "kern" 1, "liga" 1; + text-rendering: optimizeLegibility; } /* Keep code snippets from breaking on mobile */ :where(h1, h2, h3, h4, h5, h6) code { white-space: nowrap; } + + /* Specific spacing fixes for hero text */ + .hero-heading { + line-height: 1.15; + margin-bottom: 2rem; + text-wrap: balance; + } + + .hero-subtext { + line-height: 1.5; + margin-bottom: 2rem; + letter-spacing: 0.015em; + word-spacing: 0.01em; + } } diff --git a/web/tailwind.config.ts b/web/tailwind.config.ts index b20cd03b30..fabfd6f289 100644 --- a/web/tailwind.config.ts +++ b/web/tailwind.config.ts @@ -13,6 +13,7 @@ const config = { fontFamily: { sans: ['var(--font-sans)'], mono: ['"DM Mono"', 'var(--font-mono)'], + 'dm-mono': ['"DM Mono"', 'monospace'], paragraph: ['Manrope', 'var(--font-sans)', 'sans-serif'], serif: ['Domine', 'serif'], },