/* Import Premium Fonts: Space Grotesk (headlines) + Inter Tight (body/UI) - MUST be first */ @import url('https://fonts.googleapis.com/css2?family=Inter+Tight:wght@300;400;500;600;700&family=Space+Grotesk:wght@400;500;600;700&display=swap'); @tailwind base; @tailwind components; @tailwind utilities; @layer base { :root { /* Premium Warm Palette - Extracted from User Image */ --background: 40 11% 97%; /* #F9F8F6 */ --foreground: 30 10% 20%; /* Dark Charcoal for text */ --card: 0 0% 100%; /* #FFFFFF */ --card-foreground: 30 10% 20%; --popover: 0 0% 100%; --popover-foreground: 30 10% 20%; --primary: 34 29% 70%; /* #C9B59C - Sand/Gold Accent */ --primary-foreground: 0 0% 100%; --secondary: 30 24% 91%; /* #EFE9E3 - Light Beige */ --secondary-foreground: 30 10% 20%; --muted: 27 18% 82%; /* #D9CFC7 - Taupe/Grayish */ --muted-foreground: 30 8% 45%; --accent: 34 29% 70%; --accent-foreground: 0 0% 100%; --destructive: 0 72% 51%; --destructive-foreground: 0 0% 100%; --success: 142 76% 36%; --success-foreground: 0 0% 100%; --warning: 38 92% 50%; --warning-foreground: 0 0% 100%; --border: 27 18% 82%; --input: 27 18% 82%; --ring: 34 29% 70%; --radius: 0.75rem; /* New Accent Colors for Landing Page */ --burgundy: 349 67% 36%; /* #8B2635 - Deep burgundy for "change detected" */ --teal: 177 35% 28%; /* #2D5F5D - Deep teal for "signal/filtered" */ --noise-bg: 40 11% 96%; /* #F5F5F3 - Very light gray with texture */ /* Section Background Variations for Visual Rhythm */ --section-bg-1: 40 11% 97%; /* Cream/Off-White - Hero */ --section-bg-2: 30 15% 95%; /* Warmer Beige - Stats */ --section-bg-3: 40 8% 96%; /* Kühler Grau - Use Cases */ --section-bg-4: 35 20% 94%; /* Warmes Taupe - How It Works */ --section-bg-5: 25 12% 93%; /* Sandstone - Differentiators */ --section-bg-6: 177 10% 94%; /* Sehr leichtes Teal - Pricing */ --section-bg-7: 349 8% 95%; /* Sehr leichtes Burgundy - Social Proof */ } /* Dark theme following the warm palette aesthetic */ .dark { --background: 30 15% 10%; --foreground: 40 14% 92%; --card: 30 12% 14%; --card-foreground: 40 14% 92%; --popover: 30 12% 14%; --popover-foreground: 40 14% 92%; --primary: 32 35% 55%; --primary-foreground: 30 15% 10%; --secondary: 30 12% 20%; --secondary-foreground: 40 14% 92%; --muted: 30 12% 20%; --muted-foreground: 35 10% 60%; --accent: 32 35% 55%; --accent-foreground: 30 15% 10%; --destructive: 0 72% 51%; --destructive-foreground: 0 0% 100%; --success: 142 76% 36%; --success-foreground: 0 0% 100%; --warning: 38 92% 50%; --warning-foreground: 0 0% 100%; --border: 30 12% 24%; --input: 30 12% 24%; --ring: 32 35% 50%; } } @layer base { * { @apply border-border; } html { font-family: var(--font-body), 'Inter Tight', 'Inter', system-ui, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } body { @apply bg-background text-foreground; font-feature-settings: "cv02", "cv03", "cv04", "cv11"; } /* Typography Classes - using next/font CSS variables */ .font-display { font-family: var(--font-display), 'Space Grotesk', system-ui, sans-serif; font-feature-settings: 'ss01'; letter-spacing: -0.02em; } .font-body { font-family: var(--font-body), 'Inter Tight', 'Inter', system-ui, sans-serif; } .font-accent { font-family: var(--font-display), 'Space Grotesk', monospace; font-feature-settings: 'ss01'; } .font-mono { font-family: 'JetBrains Mono', monospace; } /* Typography Size Utilities */ .text-display-xl { font-size: clamp(3rem, 8vw, 7rem); font-weight: 700; line-height: 0.95; letter-spacing: -0.03em; } .text-display-lg { font-size: clamp(2.5rem, 6vw, 5rem); font-weight: 600; line-height: 1.05; letter-spacing: -0.02em; } .text-body-lg { font-size: clamp(1.125rem, 2vw, 1.5rem); line-height: 1.6; font-weight: 400; } } /* Premium UI Utilities */ @layer components { /* Glass Panel Effect */ .glass-panel { @apply bg-card/80 backdrop-blur-md border border-border/50 shadow-lg; } /* Premium Card with subtle shadow and hover effect */ .premium-card { @apply bg-card rounded-xl border border-border/50 shadow-sm transition-all duration-300; @apply hover:shadow-md hover:border-primary/30; } /* Glassmorphism Cards - Premium frosted glass effect */ .glass-card { background: rgba(255, 255, 255, 0.7); backdrop-filter: blur(20px) saturate(180%); -webkit-backdrop-filter: blur(20px) saturate(180%); border: 1px solid rgba(255, 255, 255, 0.3); box-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.08), inset 0 1px 0 0 rgba(255, 255, 255, 0.5); } .glass-card-dark { background: rgba(0, 0, 0, 0.4); backdrop-filter: blur(20px) saturate(180%); -webkit-backdrop-filter: blur(20px) saturate(180%); border: 1px solid rgba(255, 255, 255, 0.1); } /* Gradient Accent Background */ .gradient-accent { background: linear-gradient(135deg, hsl(var(--primary)) 0%, hsl(var(--secondary)) 100%); } /* New Gradient Combinations */ .gradient-primary-teal { background: linear-gradient(135deg, hsl(var(--primary)) 0%, hsl(var(--teal)) 100%); } .gradient-teal-burgundy { background: linear-gradient(135deg, hsl(var(--teal)) 0%, hsl(var(--burgundy)) 100%); } .gradient-warm { background: linear-gradient(135deg, hsl(var(--primary)) 0%, hsl(34 40% 60%) 100%); } .gradient-cool { background: linear-gradient(135deg, hsl(var(--teal)) 0%, hsl(200 30% 50%) 100%); } /* Status indicator dots */ .status-dot { @apply w-2.5 h-2.5 rounded-full; } .status-dot-success { @apply status-dot bg-green-500; box-shadow: 0 0 8px rgba(34, 197, 94, 0.5); } .status-dot-error { @apply status-dot bg-red-500; box-shadow: 0 0 8px rgba(239, 68, 68, 0.5); } .status-dot-warning { @apply status-dot bg-yellow-500; box-shadow: 0 0 8px rgba(234, 179, 8, 0.5); } .status-dot-neutral { @apply status-dot bg-gray-400; } /* Animated skeleton loading */ .skeleton { @apply animate-pulse bg-muted rounded; } /* Focus ring for accessibility */ .focus-ring { @apply focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:ring-offset-background; } } /* Smooth scrollbar */ @layer utilities { .scrollbar-thin { scrollbar-width: thin; scrollbar-color: hsl(var(--border)) transparent; } .scrollbar-thin::-webkit-scrollbar { width: 6px; height: 6px; } .scrollbar-thin::-webkit-scrollbar-track { background: transparent; } .scrollbar-thin::-webkit-scrollbar-thumb { background-color: hsl(var(--border)); border-radius: 3px; } .scrollbar-thin::-webkit-scrollbar-thumb:hover { background-color: hsl(var(--muted-foreground)); } } /* Animations */ @keyframes fadeIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } } @keyframes slideIn { from { opacity: 0; transform: translateX(-16px); } to { opacity: 1; transform: translateX(0); } } @keyframes pulse-glow { 0%, 100% { box-shadow: 0 0 4px rgba(196, 178, 156, 0.4); } 50% { box-shadow: 0 0 12px rgba(196, 178, 156, 0.7); } } .animate-fade-in { animation: fadeIn 0.3s ease-out forwards; } .animate-slide-in { animation: slideIn 0.3s ease-out forwards; } .animate-pulse-glow { animation: pulse-glow 2s ease-in-out infinite; } /* Grain Texture Overlay */ @keyframes grain { 0%, 100% { transform: translate(0, 0); } 10% { transform: translate(-5%, -10%); } 20% { transform: translate(-15%, 5%); } 30% { transform: translate(7%, -25%); } 40% { transform: translate(-5%, 25%); } 50% { transform: translate(-15%, 10%); } 60% { transform: translate(15%, 0%); } 70% { transform: translate(0%, 15%); } 80% { transform: translate(3%, 35%); } 90% { transform: translate(-10%, 10%); } } .grain-texture::before { content: ''; position: absolute; inset: 0; opacity: 0.03; background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 400 400' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)'/%3E%3C/svg%3E"); animation: grain 8s steps(10) infinite; pointer-events: none; } /* Stagger Animation Delays */ .stagger-1 { animation-delay: 0.1s; } .stagger-2 { animation-delay: 0.2s; } .stagger-3 { animation-delay: 0.3s; } .stagger-4 { animation-delay: 0.4s; } .stagger-5 { animation-delay: 0.5s; } .stagger-6 { animation-delay: 0.6s; } /* Enhanced Animations for Phase 2 */ /* Smooth Scale In with Spring */ @keyframes scaleInSpring { 0% { opacity: 0; transform: scale(0.85); } 50% { transform: scale(1.05); } 100% { opacity: 1; transform: scale(1); } } /* Blur to Sharp */ @keyframes blurToSharp { from { filter: blur(10px); opacity: 0; } to { filter: blur(0px); opacity: 1; } } /* Letter Spacing Animation */ @keyframes letterSpacing { from { letter-spacing: 0.2em; opacity: 0; } to { letter-spacing: normal; opacity: 1; } } /* Rubber Band Effect */ @keyframes rubberBand { 0% { transform: scale3d(1, 1, 1); } 30% { transform: scale3d(1.25, 0.75, 1); } 40% { transform: scale3d(0.75, 1.25, 1); } 50% { transform: scale3d(1.15, 0.85, 1); } 65% { transform: scale3d(0.95, 1.05, 1); } 75% { transform: scale3d(1.05, 0.95, 1); } 100% { transform: scale3d(1, 1, 1); } } /* Glow Pulse */ @keyframes glowPulse { 0%, 100% { box-shadow: 0 0 5px hsl(var(--teal) / 0.3), 0 0 10px hsl(var(--teal) / 0.2); } 50% { box-shadow: 0 0 20px hsl(var(--teal) / 0.6), 0 0 30px hsl(var(--teal) / 0.3), 0 0 40px hsl(var(--teal) / 0.2); } } /* Gradient Shift */ @keyframes gradientShift { 0%, 100% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } } /* Shimmer Effect */ @keyframes shimmer { 0% { transform: translateX(-100%) skewX(-20deg); } 100% { transform: translateX(200%) skewX(-20deg); } } /* Ripple Effect */ @keyframes ripple { 0% { transform: scale(0); opacity: 1; } 100% { transform: scale(4); opacity: 0; } } /* Bounce In */ @keyframes bounceIn { 0% { opacity: 0; transform: scale(0.3) translateY(-50px); } 50% { opacity: 1; transform: scale(1.05); } 70% { transform: scale(0.9); } 100% { transform: scale(1); } } /* Float Animation */ @keyframes float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-10px); } } /* Rotate 3D */ @keyframes rotate3d { 0% { transform: perspective(1000px) rotateY(0deg); } 100% { transform: perspective(1000px) rotateY(360deg); } } /* Utility Classes */ .animate-scale-in-spring { animation: scaleInSpring 0.6s cubic-bezier(0.22, 1, 0.36, 1) forwards; } .animate-blur-to-sharp { animation: blurToSharp 0.8s ease-out forwards; } .animate-letter-spacing { animation: letterSpacing 1s ease-out forwards; } .animate-rubber-band { animation: rubberBand 0.8s ease-out; } .animate-glow-pulse { animation: glowPulse 2s ease-in-out infinite; } .animate-gradient-shift { animation: gradientShift 3s ease infinite; background-size: 200% 200%; } .animate-shimmer { animation: shimmer 2s ease-in-out; } .animate-ripple { animation: ripple 0.6s ease-out; } .animate-bounce-in { animation: bounceIn 0.8s cubic-bezier(0.22, 1, 0.36, 1) forwards; } .animate-float { animation: float 3s ease-in-out infinite; } .animate-rotate-3d { animation: rotate3d 20s linear infinite; } /* Hover Effects */ .hover-lift { transition: transform 0.3s ease, box-shadow 0.3s ease; } .hover-lift:hover { transform: translateY(-8px); box-shadow: 0 20px 40px rgba(0, 0, 0, 0.15); } .hover-glow { position: relative; transition: all 0.3s ease; } .hover-glow:hover { box-shadow: 0 0 20px hsl(var(--primary) / 0.5); } .hover-scale { transition: transform 0.3s ease; } .hover-scale:hover { transform: scale(1.05); } /* Gradient Text */ .gradient-text { background: linear-gradient(135deg, hsl(var(--primary)) 0%, hsl(var(--teal)) 50%, hsl(var(--burgundy)) 100%); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; background-size: 200% auto; } .gradient-text-animated { background: linear-gradient(135deg, hsl(var(--primary)) 0%, hsl(var(--teal)) 50%, hsl(var(--burgundy)) 100%); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; background-size: 200% auto; animation: gradientShift 3s ease infinite; } /* Reduced Motion Support */ @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; } .grain-texture::before { animation: none; } }