diff --git a/apps/web/src/app/globals.css b/apps/web/src/app/globals.css index 4254162..2098b3a 100644 --- a/apps/web/src/app/globals.css +++ b/apps/web/src/app/globals.css @@ -66,9 +66,32 @@ --radius-xl: 12px; --radius: var(--radius-md); + /* Spacing - Editorial scale for airy layouts */ + --spacing-section: 6rem; /* 96px - Between major sections */ + --spacing-component: 3rem; /* 48px - Between components */ + --spacing-element: 1.5rem; /* 24px - Between related elements */ + --spacing-tight: 0.75rem; /* 12px - Tight groupings */ + --spacing-comfortable: 2rem; /* 32px - Comfortable breathing room */ + /* Typography */ - --font-sans: 'Geist', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; - --font-mono: 'Geist Mono', 'SF Mono', Consolas, monospace; + --font-sans: var(--font-sans), -apple-system, BlinkMacSystemFont, system-ui, sans-serif; + --font-mono: var(--font-mono), 'SF Mono', Consolas, monospace; + + /* Editorial Line Heights - Airy, readable */ + --leading-tight: 1.25; + --leading-snug: 1.375; + --leading-normal: 1.5; + --leading-relaxed: 1.625; + --leading-loose: 1.75; + --leading-editorial: 1.8; /* Extra generous for body copy */ + + /* Letter Spacing - Technical precision */ + --tracking-tighter: -0.05em; + --tracking-tight: -0.025em; + --tracking-normal: 0; + --tracking-wide: 0.025em; + --tracking-wider: 0.05em; + --tracking-widest: 0.1em; } /* Dark mode (opt-in) - Vercel/Cursor/Perplexity aesthetic */ @@ -199,6 +222,11 @@ border-style: dashed; } + .border-dotted-2 { + border-width: 2px; + border-style: dotted; + } + /* Directional dotted borders */ .border-t-dotted { border-top-width: 1px; @@ -220,6 +248,19 @@ border-right-style: dotted; } + /* Shadow utilities - Blueprint aesthetic */ + .shadow-blueprint { + box-shadow: + 0 1px 2px 0 rgb(0 0 0 / 0.03), + 0 0 0 1px rgb(0 0 0 / 0.02); + } + + .shadow-blueprint-hover { + box-shadow: + 0 2px 4px 0 rgb(0 0 0 / 0.05), + 0 0 0 1px rgb(0 0 0 / 0.03); + } + /* Transition presets */ .transition-base { transition-property: background-color, border-color, color, fill, stroke; diff --git a/apps/web/src/app/layout.tsx b/apps/web/src/app/layout.tsx index 15c805b..0cf440a 100644 --- a/apps/web/src/app/layout.tsx +++ b/apps/web/src/app/layout.tsx @@ -1,7 +1,21 @@ import type { Metadata } from "next"; +import { Space_Grotesk, Space_Mono } from "next/font/google"; import { ThemeProvider } from "../components/providers/ThemeProvider"; import "./globals.css"; +const spaceGrotesk = Space_Grotesk({ + subsets: ["latin"], + variable: "--font-sans", + display: "swap", +}); + +const spaceMono = Space_Mono({ + subsets: ["latin"], + weight: ["400", "700"], + variable: "--font-mono", + display: "swap", +}); + export const metadata: Metadata = { title: "TPMJS - Tool Package Manager for AI Agents", description: @@ -14,8 +28,12 @@ export default function RootLayout({ children: React.ReactNode; }): React.ReactElement { return ( - -
+ +