From 8f1a5f1f4e176325b06ee0d31cd5b414e0a869f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=B7=E7=94=B5=E8=8A=BD=E8=A1=A3?= Date: Tue, 7 Jul 2026 22:57:54 -0400 Subject: [PATCH] Enrich the landing page with a bento grid and aurora atmosphere Close the flat-vs-adaline gap by adding depth and motion to our product shots: - bento: replace the flat stacked features with a varied 12-column grid (org chart, cost, office, messages, connectors, plus a local-first highlight card), each with a corner glow and hover - showcase: a dark aurora "Set the goal" statement band (Newsreader serif over a drifting northern-lights glow) for a light -> dark -> light rhythm - hero + footer: aurora glow staging behind the dashboard and under the CTA - ui/aurora + globals: mint/teal/lime drift-animated glow tokens - remove the superseded flat feature components e2e green (12 passed); build verified. --- landing/app/globals.css | 24 ++++ landing/app/page.tsx | 6 +- landing/components/layout/footer.tsx | 6 +- landing/components/sections/bento.tsx | 104 ++++++++++++++++++ .../components/sections/feature-section.tsx | 18 --- landing/components/sections/features.tsx | 15 --- landing/components/sections/hero.tsx | 23 +++- landing/components/sections/showcase.tsx | 25 +++++ landing/components/ui/aurora.tsx | 20 ++++ 9 files changed, 199 insertions(+), 42 deletions(-) create mode 100644 landing/components/sections/bento.tsx delete mode 100644 landing/components/sections/feature-section.tsx delete mode 100644 landing/components/sections/features.tsx create mode 100644 landing/components/sections/showcase.tsx create mode 100644 landing/components/ui/aurora.tsx diff --git a/landing/app/globals.css b/landing/app/globals.css index 97be94da..e567027a 100644 --- a/landing/app/globals.css +++ b/landing/app/globals.css @@ -47,6 +47,9 @@ --glow-warm: rgba(32, 59, 20, 0.05); --glow-accent: rgba(99, 143, 61, 0.06); --section-alt: rgba(32, 59, 20, 0.02); + --aurora-mint: rgba(94, 236, 151, 0.22); + --aurora-teal: rgba(45, 212, 191, 0.16); + --aurora-lime: rgba(137, 175, 84, 0.16); } /* ── Dark theme (Material-3 dark surfaces + mint primary) ── */ @@ -81,6 +84,9 @@ --glow-warm: rgba(94, 236, 151, 0.05); --glow-accent: rgba(94, 236, 151, 0.04); --section-alt: rgba(94, 236, 151, 0.03); + --aurora-mint: rgba(94, 236, 151, 0.3); + --aurora-teal: rgba(45, 212, 191, 0.22); + --aurora-lime: rgba(137, 175, 84, 0.18); } /* ── Base ── */ @@ -201,6 +207,24 @@ body { transform: translateY(0); } +/* ── Aurora: slow-drifting gradient light for dark showcase surfaces ── */ +@keyframes aurora-drift { + 0% { + transform: translate3d(0, 0, 0) scale(1); + } + 50% { + transform: translate3d(-4%, 3%, 0) scale(1.12); + } + 100% { + transform: translate3d(0, 0, 0) scale(1); + } +} + +.aurora-layer { + animation: aurora-drift 20s ease-in-out infinite; + will-change: transform; +} + /* ── Reduced motion ── */ @media (prefers-reduced-motion: reduce) { html { diff --git a/landing/app/page.tsx b/landing/app/page.tsx index 4d7db44b..ba668168 100644 --- a/landing/app/page.tsx +++ b/landing/app/page.tsx @@ -1,11 +1,12 @@ +import { Bento } from "../components/sections/bento"; import { DownloadSection } from "../components/sections/download-section"; import { FAQ } from "../components/sections/faq"; -import { Features } from "../components/sections/features"; import { Footer } from "../components/layout/footer"; import { Hero } from "../components/sections/hero"; import { HowItWorks } from "../components/sections/how-it-works"; import { Navbar } from "../components/layout/navbar"; import { Runtimes } from "../components/sections/runtimes"; +import { Showcase } from "../components/sections/showcase"; export default function Page() { return ( @@ -22,7 +23,8 @@ export default function Page() {
- + + diff --git a/landing/components/layout/footer.tsx b/landing/components/layout/footer.tsx index 0c2ba5ae..27997218 100644 --- a/landing/components/layout/footer.tsx +++ b/landing/components/layout/footer.tsx @@ -1,6 +1,7 @@ import { Container } from "../ui/container"; import { Reveal } from "../ui/reveal"; import { Button } from "../ui/button"; +import { Aurora } from "../ui/aurora"; import { IconMark } from "../brand/icon-mark"; import { getTrackedDownloadHref } from "../../lib/downloads"; import { CONTACT_EMAIL, WEBSITE_URL } from "../../lib/site-constants"; @@ -40,8 +41,9 @@ export function Footer() { const year = new Date().getFullYear(); return ( -