From c8425efeeef24bf6cb1cc3baba4c8db446c8355e Mon Sep 17 00:00:00 2001 From: Adam Date: Tue, 27 Oct 2026 18:57:08 +0000 Subject: [PATCH] Landing page: less text, a phone-first hero, three fewer sections On a phone the first screen now holds Ollie, the H1, one line, the Start trial button and three checked chips. The hero copy is the first sentence of the old subheadline; the announcement, second button and plan boxes are gone, and the product preview shows from lg up. What's new, Active Grounding and Use cases are removed: they repeated the feature list. Features are icon tiles, How it works and Pricing carry one short line per item, the short answer folds to three lines on phones, and the guide links become chip rows that scroll sideways on phones. Every link, anchor, heading level and JSON-LD source string stays. Unused keys leave all three catalogs; hu and es get the same shorter copy. At 390 px the English page goes from about 15,250 px to 5,120 px. Co-Authored-By: Claude Opus 5.5 --- src/components/landing/DeepDive.tsx | 80 ----------------- src/components/landing/FAQ.tsx | 9 +- src/components/landing/Features.tsx | 26 ++++-- src/components/landing/FinalCTA.tsx | 17 +--- src/components/landing/GuideHub.tsx | 52 ++++++----- src/components/landing/Hero.tsx | 58 ++++-------- src/components/landing/HowItWorks.tsx | 47 +++++----- src/components/landing/Navbar.tsx | 3 +- src/components/landing/Pricing.tsx | 78 ++++++---------- src/components/landing/ShortAnswer.tsx | 50 +++++++---- src/components/landing/UseCases.tsx | 66 -------------- src/components/landing/WhatsNew.tsx | 50 ----------- src/locales/en.json | 120 ++++--------------------- src/locales/es.json | 120 ++++--------------------- src/locales/hu.json | 120 ++++--------------------- src/pages/LandingPage.tsx | 8 +- 16 files changed, 209 insertions(+), 695 deletions(-) delete mode 100644 src/components/landing/DeepDive.tsx delete mode 100644 src/components/landing/UseCases.tsx delete mode 100644 src/components/landing/WhatsNew.tsx diff --git a/src/components/landing/DeepDive.tsx b/src/components/landing/DeepDive.tsx deleted file mode 100644 index 9a1ed934e..000000000 --- a/src/components/landing/DeepDive.tsx +++ /dev/null @@ -1,80 +0,0 @@ -import { useTranslation } from "react-i18next"; -import { Reveal } from "./Reveal"; -import { Database, ScanSearch, Sparkles, Network } from "lucide-react"; - -const DeepDive = () => { - const { t } = useTranslation(); - - const steps = [ - { icon: ScanSearch, title: t('deepDive.step1'), description: t('deepDive.step1Desc') }, - { icon: Database, title: t('deepDive.step2'), description: t('deepDive.step2Desc') }, - { icon: Network, title: t('deepDive.step3'), description: t('deepDive.step3Desc') }, - { icon: Sparkles, title: t('deepDive.step4'), description: t('deepDive.step4Desc') }, - ]; - - return ( -
-
-
- -

{t('deepDive.title')}

-

- {t('deepDive.subtitle')} -

- -
- {steps.map((step, index) => ( - -
-
-
-

{step.title}

-

{step.description}

-
-
- ))} -
-
- - -
-
-
-
{t('deepDive.preview.processHeading')}
-
- - {t('deepDive.preview.scanning')} -
-
- - {t('deepDive.preview.extracted')} -
-
- - {t('deepDive.preview.vectorizing')} -
-
- {t('deepDive.preview.query')} -
-
- - {t('deepDive.preview.retrieved')} -
-
- - {t('deepDive.preview.generating')} -
-
- {t('deepDive.preview.response')} -
-
-
- -
-
-
- ); -}; - -export default DeepDive; diff --git a/src/components/landing/FAQ.tsx b/src/components/landing/FAQ.tsx index edf3d9ae3..98591185a 100644 --- a/src/components/landing/FAQ.tsx +++ b/src/components/landing/FAQ.tsx @@ -19,18 +19,17 @@ const FAQ = () => { ]; return ( -
+
- -

{t('faq.title')}

-

{t('faq.subtitle')}

+ +

{t('faq.title')}

{/* Native disclosure: closed answers stay in the HTML, so crawlers and find-in-page see them. */} {faqs.map((faq) => (
- + {faq.question} diff --git a/src/components/landing/Features.tsx b/src/components/landing/Features.tsx index fb46671bd..81ab1f1ca 100644 --- a/src/components/landing/Features.tsx +++ b/src/components/landing/Features.tsx @@ -32,7 +32,7 @@ const Features = () => { ]; return ( -
+
{/* Positioned with top, not a translate, so nothing can override it. */}
@@ -40,19 +40,27 @@ const Features = () => {
- +

{t('features.title')}

-
+ {/* Phones get icon tiles, two across; the one-line description joins from sm up. */} +
{features.map((feature, index) => ( - -
-
-