@tailwind base; @tailwind components; @tailwind utilities; @layer base { html { scroll-behavior: smooth; /* Offset scroll targets so the sticky navbar (64px) doesn't cover section headings */ scroll-padding-top: 72px; } body { background-color: #F2EFE7; color: #1A0A10; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; font-family: 'Inter', system-ui, -apple-system, sans-serif; } } /* ── Scrollbar ─────────────────────────────────────────────────────────── */ ::-webkit-scrollbar { width: 5px; height: 5px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: rgba(139,0,74,0.18); border-radius: 99px; } ::-webkit-scrollbar-thumb:hover { background: rgba(139,0,74,0.35); } /* ── Glass card ─────────────────────────────────────────────────────────── */ .glass { background: rgba(255,255,255,0.72); border: 1px solid rgba(255,255,255,0.9); backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px); } .glass-dark { background: rgba(139,0,74,0.08); border: 1px solid rgba(139,0,74,0.15); backdrop-filter: blur(12px); } /* ── Navbar blur ────────────────────────────────────────────────────────── */ .navbar-blur { background: rgba(242,239,231,0.80); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); } /* ── Brand glow ─────────────────────────────────────────────────────────── */ .glow-brand { box-shadow: 0 0 24px rgba(139,0,74,0.30); } .glow-brand-sm { box-shadow: 0 0 12px rgba(139,0,74,0.20); } /* ── Gradient text ──────────────────────────────────────────────────────── */ .text-gradient-brand { background: linear-gradient(135deg, #8B004A 0%, #C94D8B 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } /* ── Floating animation offsets ─────────────────────────────────────────── */ .float-delay-1 { animation-delay: -2s; } .float-delay-2 { animation-delay: -4s; } .float-delay-3 { animation-delay: -1s; } /* ── Thinking dots ──────────────────────────────────────────────────────── */ @keyframes thinkDot { 0%, 80%, 100% { opacity: 0.25; transform: scale(0.8); } 40% { opacity: 1; transform: scale(1); } } .thinking-dot { animation: thinkDot 1.4s ease-in-out infinite; } /* ── Message enter ──────────────────────────────────────────────────────── */ @keyframes msgEnter { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: translateY(0); } } .msg-enter { animation: msgEnter 0.22s ease-out both; } /* ── Toast ──────────────────────────────────────────────────────────────── */ @keyframes toastIn { from { opacity: 0; transform: translateY(10px) scale(0.95); } to { opacity: 1; transform: translateY(0) scale(1); } } .toast-enter { animation: toastIn 0.2s ease-out both; } /* ── Prose styles for AI chat ───────────────────────────────────────────── */ .ai-prose h1, .ai-prose h2, .ai-prose h3 { color: #8B004A; font-weight: 600; margin-top: 0.75rem; margin-bottom: 0.25rem; } .ai-prose p { margin-bottom: 0.5rem; line-height: 1.7; color: #2D1520; } .ai-prose ul, .ai-prose ol { padding-left: 1.25rem; margin-bottom: 0.5rem; } .ai-prose li { color: #3D2030; margin-bottom: 0.125rem; } .ai-prose code { background: rgba(139,0,74,0.08); color: #8B004A; padding: 0.1rem 0.4rem; border-radius: 4px; font-size: 0.82em; font-family: 'JetBrains Mono', 'Fira Code', monospace; } .ai-prose pre { background: #1A0A10; border: 1px solid rgba(139,0,74,0.2); border-radius: 12px; padding: 1rem; overflow-x: auto; margin: 0.75rem 0; } .ai-prose pre code { background: transparent; color: #F2EFE7; padding: 0; } .ai-prose blockquote { border-left: 3px solid #8B004A; padding-left: 1rem; color: #6B4560; font-style: italic; margin: 0.5rem 0; } .ai-prose a { color: #8B004A; text-decoration: underline; } .ai-prose table { width: 100%; border-collapse: collapse; font-size: 0.875rem; margin: 0.75rem 0; } .ai-prose th { background: rgba(139,0,74,0.08); padding: 0.5rem 0.75rem; text-align: left; font-weight: 600; } .ai-prose td { border-top: 1px solid rgba(139,0,74,0.1); padding: 0.5rem 0.75rem; } .ai-prose strong { color: #1A0A10; font-weight: 600; } /* ── Node pulse animation for hero ─────────────────────────────────────── */ @keyframes nodeGlow { 0%, 100% { box-shadow: 0 0 6px rgba(139,0,74,0.3); } 50% { box-shadow: 0 0 18px rgba(139,0,74,0.7); } } .node-glow { animation: nodeGlow 2s ease-in-out infinite; } /* ── Workflow step connector ────────────────────────────────────────────── */ @keyframes flowLine { 0% { stroke-dashoffset: 60; } 100% { stroke-dashoffset: 0; } }