-
{question}
-
{answer}
+
)
}
diff --git a/src/app/globals.css b/src/app/globals.css
index a2dc41e..049d95a 100644
--- a/src/app/globals.css
+++ b/src/app/globals.css
@@ -1,26 +1,238 @@
@import "tailwindcss";
-:root {
- --background: #ffffff;
- --foreground: #171717;
-}
+/* ==========================================================================
+ LEOPOST DESIGN SYSTEM - "Editorial Fresh"
+ ========================================================================== */
@theme inline {
- --color-background: var(--background);
- --color-foreground: var(--foreground);
- --font-sans: var(--font-geist-sans);
- --font-mono: var(--font-geist-mono);
+ /* Typography */
+ --font-body: var(--font-body), system-ui, sans-serif;
+ --font-display: var(--font-display), Georgia, serif;
+
+ /* Color Palette */
+ --color-cream: #FFFBF5;
+ --color-cream-dark: #F5F0E8;
+ --color-ink: #1A1A1A;
+ --color-ink-light: #4A4A4A;
+ --color-ink-muted: #7A7A7A;
+
+ /* Accent - Coral Red */
+ --color-accent: #E85A4F;
+ --color-accent-hover: #D14940;
+ --color-accent-light: #FFF0EE;
+
+ /* Semantic */
+ --color-background: var(--color-cream);
+ --color-foreground: var(--color-ink);
+ --color-muted: var(--color-ink-muted);
+ --color-border: #E5E0D8;
+ --color-border-strong: #D0C9BD;
+
+ /* Success/Error */
+ --color-success: #2D7A4F;
+ --color-success-light: #E8F5ED;
+ --color-error: #C53030;
+ --color-error-light: #FEE2E2;
}
-@media (prefers-color-scheme: dark) {
- :root {
- --background: #0a0a0a;
- --foreground: #ededed;
+/* ==========================================================================
+ BASE STYLES
+ ========================================================================== */
+
+body {
+ background-color: var(--color-cream);
+ color: var(--color-ink);
+ font-family: var(--font-body);
+ font-size: 16px;
+ line-height: 1.6;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+/* Display Typography */
+.font-display {
+ font-family: var(--font-display);
+ font-optical-sizing: auto;
+}
+
+.font-body {
+ font-family: var(--font-body);
+}
+
+/* Heading Styles */
+h1, h2, h3, h4, h5, h6,
+.heading {
+ font-family: var(--font-display);
+ font-weight: 600;
+ line-height: 1.2;
+ color: var(--color-ink);
+ letter-spacing: -0.02em;
+}
+
+/* ==========================================================================
+ EDITORIAL ELEMENTS
+ ========================================================================== */
+
+/* Decorative line */
+.editorial-line {
+ width: 60px;
+ height: 3px;
+ background-color: var(--color-accent);
+}
+
+/* Pull quote style */
+.pull-quote {
+ font-family: var(--font-display);
+ font-size: 1.5rem;
+ font-style: italic;
+ color: var(--color-ink-light);
+ border-left: 3px solid var(--color-accent);
+ padding-left: 1.5rem;
+}
+
+/* Label/Tag style */
+.editorial-tag {
+ font-size: 0.75rem;
+ font-weight: 600;
+ letter-spacing: 0.1em;
+ text-transform: uppercase;
+ color: var(--color-accent);
+}
+
+/* ==========================================================================
+ COMPONENT OVERRIDES
+ ========================================================================== */
+
+/* Buttons - Primary */
+.btn-primary {
+ background-color: var(--color-ink);
+ color: var(--color-cream);
+ font-weight: 500;
+ padding: 0.75rem 1.5rem;
+ border-radius: 0;
+ transition: all 0.2s ease;
+}
+
+.btn-primary:hover {
+ background-color: var(--color-accent);
+ transform: translateY(-1px);
+}
+
+/* Buttons - Secondary */
+.btn-secondary {
+ background-color: transparent;
+ color: var(--color-ink);
+ font-weight: 500;
+ padding: 0.75rem 1.5rem;
+ border: 2px solid var(--color-ink);
+ border-radius: 0;
+ transition: all 0.2s ease;
+}
+
+.btn-secondary:hover {
+ background-color: var(--color-ink);
+ color: var(--color-cream);
+}
+
+/* Cards */
+.card-editorial {
+ background-color: white;
+ border: 1px solid var(--color-border);
+ padding: 2rem;
+ position: relative;
+}
+
+.card-editorial::before {
+ content: '';
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 4px;
+ background-color: var(--color-accent);
+}
+
+/* Input fields */
+input[type="text"],
+input[type="email"],
+input[type="password"],
+textarea {
+ border: 1px solid var(--color-border);
+ border-radius: 0;
+ background-color: white;
+ padding: 0.75rem 1rem;
+ font-family: var(--font-body);
+ transition: border-color 0.2s ease;
+}
+
+input:focus,
+textarea:focus {
+ outline: none;
+ border-color: var(--color-ink);
+}
+
+/* ==========================================================================
+ UTILITIES
+ ========================================================================== */
+
+/* Text colors */
+.text-accent { color: var(--color-accent); }
+.text-muted { color: var(--color-ink-muted); }
+.text-ink { color: var(--color-ink); }
+.text-ink-light { color: var(--color-ink-light); }
+
+/* Background colors */
+.bg-cream { background-color: var(--color-cream); }
+.bg-cream-dark { background-color: var(--color-cream-dark); }
+.bg-accent-light { background-color: var(--color-accent-light); }
+
+/* Border colors */
+.border-editorial { border-color: var(--color-border); }
+
+/* ==========================================================================
+ ANIMATIONS
+ ========================================================================== */
+
+@keyframes fade-up {
+ from {
+ opacity: 0;
+ transform: translateY(20px);
+ }
+ to {
+ opacity: 1;
+ transform: translateY(0);
}
}
-body {
- background: var(--background);
- color: var(--foreground);
- font-family: Arial, Helvetica, sans-serif;
+@keyframes fade-in {
+ from { opacity: 0; }
+ to { opacity: 1; }
+}
+
+.animate-fade-up {
+ animation: fade-up 0.6s ease-out forwards;
+}
+
+.animate-fade-in {
+ animation: fade-in 0.4s ease-out forwards;
+}
+
+/* Staggered animations */
+.stagger-1 { animation-delay: 0.1s; }
+.stagger-2 { animation-delay: 0.2s; }
+.stagger-3 { animation-delay: 0.3s; }
+.stagger-4 { animation-delay: 0.4s; }
+
+/* ==========================================================================
+ SELECTION & FOCUS
+ ========================================================================== */
+
+::selection {
+ background-color: var(--color-accent);
+ color: white;
+}
+
+:focus-visible {
+ outline: 2px solid var(--color-accent);
+ outline-offset: 2px;
}
diff --git a/src/app/layout.tsx b/src/app/layout.tsx
index 588139f..a254806 100644
--- a/src/app/layout.tsx
+++ b/src/app/layout.tsx
@@ -1,15 +1,17 @@
import type { Metadata } from "next";
-import { Geist, Geist_Mono } from "next/font/google";
+import { DM_Sans, Fraunces } from "next/font/google";
import "./globals.css";
-const geistSans = Geist({
- variable: "--font-geist-sans",
+const dmSans = DM_Sans({
+ variable: "--font-body",
subsets: ["latin"],
+ display: "swap",
});
-const geistMono = Geist_Mono({
- variable: "--font-geist-mono",
+const fraunces = Fraunces({
+ variable: "--font-display",
subsets: ["latin"],
+ display: "swap",
});
export const metadata: Metadata = {
@@ -27,9 +29,7 @@ export default function RootLayout({
}>) {
return (
-
+
{children}
diff --git a/src/app/page.tsx b/src/app/page.tsx
index 221289f..d89e033 100644
--- a/src/app/page.tsx
+++ b/src/app/page.tsx
@@ -1,37 +1,194 @@
import Link from 'next/link'
-import { Button } from '@/components/ui/button'
export default function Home() {
- // Simple static landing page - no Supabase for now
return (
-
-
-
- Leopost
-
-
- Il tuo social media manager potenziato dall'AI.
-
- Minimo sforzo, massima resa.
-
-
-
-
-
+
+ {/* Header */}
+
-
- Nessuna carta richiesta. Piano gratuito disponibile.
-
-
+ {/* Hero Section */}
+
+
+
+ {/* Left Column - Text */}
+
+
Social Media Manager
+
+
+ Il tuo assistente
+
+ editoriale
+
+ potenziato dall'AI
+
+
+
+
+
+ Crea, programma e pubblica contenuti su tutti i tuoi canali social.
+ Minimo sforzo, massima resa.
+
+
+
+
+ Inizia gratis
+
+
+ Ho già un account
+
+
+
+
+ Nessuna carta richiesta · Piano gratuito per sempre
+
+
+
+ {/* Right Column - Visual */}
+
+
+ {/* Decorative background */}
+
+
+ {/* Main card */}
+
+
+ {/* Fake chat message */}
+
+
+ L
+
+
+
Leopost AI
+
+ Ho preparato 3 post per la tua pagina Instagram.
+ Vuoi che li programmi per la prossima settimana?
+
+
+
+
+ {/* Divider */}
+
+
+ {/* Post preview cards */}
+
+
+ 📸
+
+
+ ✨
+
+
+ 🎯
+
+
+
+ {/* Action buttons */}
+
+
+
+
+
+
+
+
+
+
+
+
+ {/* Features Section */}
+
+
+
+ Come funziona
+
+ Tre passi verso la libertà editoriale
+
+
+
+
+ {/* Feature 1 */}
+
+
01
+
Connetti i tuoi canali
+
+ Collega Facebook, Instagram e gli altri social in pochi click.
+
+
+
+ {/* Feature 2 */}
+
+
02
+
Chatta con l'AI
+
+ Descrivi cosa vuoi comunicare. L'AI crea contenuti su misura per te.
+
+
+
+ {/* Feature 3 */}
+
+
03
+
Rilassati
+
+ Leopost pubblica automaticamente. Tu pensa al tuo business.
+
+
+
+
+
+
+ {/* CTA Section */}
+
+
+
+ Pronto a trasformare
+
+ la tua presenza social?
+
+
+
+ Inizia oggi con il piano gratuito. Nessun vincolo.
+
+
+
+ Crea il tuo account
+
+
+
+
+
+ {/* Footer */}
+
)
}
diff --git a/src/components/auth/google-button.tsx b/src/components/auth/google-button.tsx
index b0cb796..65b8f08 100644
--- a/src/components/auth/google-button.tsx
+++ b/src/components/auth/google-button.tsx
@@ -62,10 +62,10 @@ export function GoogleSignInButton() {
variant="outline"
onClick={handleGoogleSignIn}
disabled={loading}
- className="w-full flex items-center justify-center gap-2"
+ className="w-full flex items-center justify-center gap-3 h-12 text-base"
>
- {loading ? 'Reindirizzamento...' : 'Accedi con Google'}
+ {loading ? 'Reindirizzamento...' : 'Continua con Google'}
)
}
diff --git a/src/components/auth/login-form.tsx b/src/components/auth/login-form.tsx
index 12bc0ee..9a36bdd 100644
--- a/src/components/auth/login-form.tsx
+++ b/src/components/auth/login-form.tsx
@@ -43,15 +43,15 @@ export function LoginForm() {
}
return (
-