diff --git a/website/app/globals.css b/website/app/globals.css index 4e62a91..81e6d59 100644 --- a/website/app/globals.css +++ b/website/app/globals.css @@ -4,61 +4,61 @@ @custom-variant dark (&:is(.dark *)); :root { - --background: oklch(0.97 0.012 236); - --foreground: oklch(0.23 0.03 252); - --card: oklch(1 0 0); - --card-foreground: oklch(0.22 0.03 252); + --background: oklch(0.965 0.025 77); + --foreground: oklch(0.18 0.03 238); + --card: oklch(0.99 0.012 83); + --card-foreground: oklch(0.18 0.03 238); --popover: oklch(1 0 0); - --popover-foreground: oklch(0.22 0.03 252); - --primary: oklch(0.59 0.24 286); - --primary-foreground: oklch(0.985 0.003 247); - --secondary: oklch(0.93 0.045 222); - --secondary-foreground: oklch(0.28 0.06 254); - --muted: oklch(0.95 0.02 240); - --muted-foreground: oklch(0.5 0.035 252); - --accent: oklch(0.9 0.08 174); - --accent-foreground: oklch(0.25 0.05 197); + --popover-foreground: oklch(0.18 0.03 238); + --primary: oklch(0.34 0.09 39); + --primary-foreground: oklch(0.985 0.012 83); + --secondary: oklch(0.91 0.045 78); + --secondary-foreground: oklch(0.24 0.055 43); + --muted: oklch(0.93 0.026 81); + --muted-foreground: oklch(0.48 0.035 238); + --accent: oklch(0.67 0.14 156); + --accent-foreground: oklch(0.16 0.04 169); --destructive: oklch(0.577 0.245 27.325); --destructive-foreground: oklch(0.577 0.245 27.325); - --border: oklch(0.88 0.035 254); - --input: oklch(0.88 0.035 254); - --ring: oklch(0.62 0.24 286); + --border: oklch(0.84 0.034 79); + --input: oklch(0.84 0.034 79); + --ring: oklch(0.54 0.12 43); --chart-1: oklch(0.646 0.222 41.116); --chart-2: oklch(0.6 0.118 184.704); --chart-3: oklch(0.398 0.07 227.392); --chart-4: oklch(0.828 0.189 84.429); --chart-5: oklch(0.769 0.188 70.08); - --radius: 0.95rem; + --radius: 1.1rem; --sidebar: oklch(0.985 0.02 244); --sidebar-foreground: var(--foreground); --sidebar-primary: var(--primary); --sidebar-primary-foreground: var(--primary-foreground); - --sidebar-accent: oklch(0.94 0.05 286); - --sidebar-accent-foreground: oklch(0.3 0.06 286); - --sidebar-border: oklch(0.87 0.05 254); + --sidebar-accent: oklch(0.91 0.045 78); + --sidebar-accent-foreground: oklch(0.24 0.055 43); + --sidebar-border: oklch(0.84 0.034 79); --sidebar-ring: var(--ring); } .dark { - --background: oklch(0.16 0.03 282); + --background: oklch(0.15 0.025 235); --foreground: oklch(0.93 0.02 252); - --card: oklch(0.21 0.03 281); + --card: oklch(0.2 0.03 235); --card-foreground: oklch(0.93 0.02 252); --popover: oklch(0.225 0.03 281); --popover-foreground: oklch(0.93 0.02 252); - --primary: oklch(0.74 0.23 300); - --primary-foreground: oklch(0.18 0.03 282); - --secondary: oklch(0.29 0.05 238); + --primary: oklch(0.76 0.14 63); + --primary-foreground: oklch(0.16 0.025 235); + --secondary: oklch(0.28 0.04 222); --secondary-foreground: oklch(0.93 0.02 252); --muted: oklch(0.26 0.03 278); --muted-foreground: oklch(0.76 0.025 252); - --accent: oklch(0.35 0.08 176); - --accent-foreground: oklch(0.93 0.03 176); + --accent: oklch(0.71 0.13 156); + --accent-foreground: oklch(0.14 0.03 160); --destructive: oklch(0.396 0.141 25.723); --destructive-foreground: oklch(0.637 0.237 25.331); --border: oklch(0.35 0.06 286); --input: oklch(0.35 0.06 286); - --ring: oklch(0.74 0.23 300); + --ring: oklch(0.76 0.14 63); --chart-1: oklch(0.488 0.243 264.376); --chart-2: oklch(0.696 0.17 162.48); --chart-3: oklch(0.769 0.188 70.08); @@ -75,7 +75,7 @@ } @theme inline { - --font-sans: 'Geist', 'Geist Fallback'; + --font-sans: 'Avenir Next', 'Gill Sans', 'Geist', 'Geist Fallback'; --font-mono: 'Geist Mono', 'Geist Mono Fallback'; --color-background: var(--background); --color-foreground: var(--foreground); @@ -123,19 +123,24 @@ @apply bg-background text-foreground; background-image: radial-gradient( - circle at 15% 10%, - color-mix(in oklch, var(--primary) 22%, transparent) 0, - transparent 32% + circle at 10% 0%, + color-mix(in oklch, var(--primary) 18%, transparent) 0, + transparent 34% ), radial-gradient( - circle at 85% 20%, - color-mix(in oklch, var(--accent) 18%, transparent) 0, - transparent 30% + circle at 92% 16%, + color-mix(in oklch, var(--accent) 16%, transparent) 0, + transparent 31% ), radial-gradient( circle at 50% 100%, - color-mix(in oklch, var(--primary) 12%, transparent) 0, - transparent 42% + color-mix(in oklch, var(--primary) 10%, transparent) 0, + transparent 44% + ), + linear-gradient( + 135deg, + color-mix(in oklch, var(--background) 92%, white), + color-mix(in oklch, var(--secondary) 45%, var(--background)) ); background-attachment: fixed; } diff --git a/website/app/layout.tsx b/website/app/layout.tsx index 19f5346..7205745 100644 --- a/website/app/layout.tsx +++ b/website/app/layout.tsx @@ -1,30 +1,27 @@ import type { Metadata } from 'next' -import { Geist, Geist_Mono } from 'next/font/google' import { Analytics } from '@vercel/analytics/next' import './globals.css' -const _geist = Geist({ subsets: ["latin"] }); -const _geistMono = Geist_Mono({ subsets: ["latin"] }); - export const metadata: Metadata = { - title: 'Heicode - 团队软件交付智能体平台', - description: '让团队能以可复述的方式回答「谁在何时对什么负责」「依据是什么」「如何回溯」。智能体适合承接标准化、可重复的环节,人机分工与审批边界由组织策略定义。', + title: 'Heicode - From one idea to production software', + description: + 'Heicode organizes AI development teams, connects your code, documents, SK skills and cloud resources, and carries work from product design to production deployment.', icons: { icon: [ { - url: '/heicode-logo.svg', + url: '/taiji-logo.png', media: '(prefers-color-scheme: light)', }, { - url: '/heicode-logo.svg', + url: '/taiji-logo.png', media: '(prefers-color-scheme: dark)', }, { - url: '/heicode-logo.svg', - type: 'image/svg+xml', + url: '/taiji-logo.png', + type: 'image/png', }, ], - apple: '/heicode-logo.svg', + apple: '/taiji-logo.png', }, } @@ -34,7 +31,7 @@ export default function RootLayout({ children: React.ReactNode }>) { return ( - +
{children} {process.env.NODE_ENV === 'production' &&- 从需求到代码到发布,让交付速度、质量门禁与回溯能力同时提升。 +
+ {t.description}
- 战略支柱 +
+ {t.eyebrow}
-- 个人开发者到多人团队,都能获得清晰的责任边界与可追溯的交付过程 + {t.description}