Spaces:
Sleeping
Sleeping
| @import "tailwindcss"; | |
| :root { | |
| --background: #ffffff; | |
| --foreground: #171717; | |
| } | |
| @theme inline { | |
| --color-background: var(--background); | |
| --color-foreground: var(--foreground); | |
| --font-sans: var(--font-geist-sans); | |
| --font-mono: var(--font-geist-mono); | |
| } | |
| @media (prefers-color-scheme: dark) { | |
| :root { | |
| --background: #0a0a0a; | |
| --foreground: #ededed; | |
| } | |
| } | |
| body { | |
| color: var(--foreground); | |
| font-family: var(--font-geist-sans), Arial, Helvetica, sans-serif; | |
| -webkit-font-smoothing: antialiased; | |
| -moz-osx-font-smoothing: grayscale; | |
| text-rendering: optimizeLegibility; | |
| font-feature-settings: "liga" 1, "calt" 1; | |
| } | |
| /* Scrollable but with no visible scrollbar (used by the chat thread). */ | |
| .no-scrollbar { | |
| -ms-overflow-style: none; | |
| scrollbar-width: none; | |
| } | |
| .no-scrollbar::-webkit-scrollbar { | |
| display: none; | |
| } | |
| /* ===== Query Bot Custom Animations & Styles ===== */ | |
| @keyframes float-top-right { | |
| 0% { | |
| transform: translate(0, 0) scale(1); | |
| opacity: 0.55; | |
| } | |
| 50% { | |
| transform: translate(-4%, 6%) scale(1.12); | |
| opacity: 0.7; | |
| } | |
| 100% { | |
| transform: translate(3%, -3%) scale(0.92); | |
| opacity: 0.45; | |
| } | |
| } | |
| @keyframes float-bottom-left { | |
| 0% { | |
| transform: translate(0, 0) scale(1); | |
| opacity: 0.5; | |
| } | |
| 50% { | |
| transform: translate(5%, -8%) scale(1.08); | |
| opacity: 0.65; | |
| } | |
| 100% { | |
| transform: translate(-3%, 3%) scale(0.95); | |
| opacity: 0.45; | |
| } | |
| } | |
| @keyframes float-bottom-right { | |
| 0% { | |
| transform: translate(0, 0) scale(1); | |
| opacity: 0.45; | |
| } | |
| 50% { | |
| transform: translate(-8%, -5%) scale(1.15); | |
| opacity: 0.6; | |
| } | |
| 100% { | |
| transform: translate(3%, 2%) scale(0.9); | |
| opacity: 0.35; | |
| } | |
| } | |
| .animate-ambient-tr { | |
| animation: float-top-right 16s ease-in-out infinite alternate; | |
| } | |
| .animate-ambient-bl { | |
| animation: float-bottom-left 18s ease-in-out infinite alternate; | |
| } | |
| .animate-ambient-br { | |
| animation: float-bottom-right 14s ease-in-out infinite alternate; | |
| } | |
| /* Typography styles for premium SaaS feeling */ | |
| .font-sans-geist { | |
| font-family: var(--font-geist-sans), sans-serif; | |
| } | |
| .gif-clipped-word { | |
| background-image: url("https://media3.giphy.com/media/v1.Y2lkPTc5MGI3NjExcTIyN2RwbGdkc2w4YWxva3pudHl6M3BtdXV0eW00ZDMzMDdhMzExMSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/irCR68lB8tZDy8GKb0/giphy.gif"); | |
| background-size: cover; | |
| background-position: center; | |
| background-repeat: repeat; | |
| color: transparent; | |
| -webkit-background-clip: text; | |
| background-clip: text; | |
| -webkit-text-fill-color: transparent; | |
| position: relative; | |
| display: inline-block; | |
| font-weight: 700; | |
| padding-right: 0.15em; | |
| /* Prevents italic character clipping on the right edge */ | |
| } | |
| /* ===== Aurora glass cards — vibrant gradient glow bleeding up from the | |
| bottom of each card. Set --aurora-1 / --aurora-2 per card to recolor. ===== */ | |
| .aurora-card { | |
| position: relative; | |
| overflow: hidden; | |
| isolation: isolate; | |
| } | |
| .aurora-card::after { | |
| content: ""; | |
| position: absolute; | |
| left: -15%; | |
| right: -15%; | |
| bottom: -55%; | |
| height: 110%; | |
| z-index: -1; | |
| pointer-events: none; | |
| background: | |
| radial-gradient(ellipse 55% 100% at 35% 100%, var(--aurora-1, rgba(139, 92, 246, 0.55)) 0%, transparent 68%), | |
| radial-gradient(ellipse 55% 100% at 70% 100%, var(--aurora-2, rgba(6, 182, 212, 0.5)) 0%, transparent 68%); | |
| filter: blur(26px); | |
| opacity: 0.5; | |
| transform: translateY(8%); | |
| transition: opacity 0.45s ease, transform 0.45s ease; | |
| } | |
| .aurora-card:hover::after { | |
| opacity: 0.9; | |
| transform: translateY(0); | |
| } | |
| @media (prefers-reduced-motion: reduce) { | |
| .aurora-card::after { | |
| transition: none; | |
| } | |
| } | |
| /* Animated GIF fill — same asset used by the "documents" hero word, reused | |
| as a button background. Paused by default (single still frame), and it | |
| plays only while the user hovers the button. */ | |
| .gif-bg { | |
| background-image: url("https://media3.giphy.com/media/irCR68lB8tZDy8GKb0/giphy_s.gif"); | |
| background-size: cover; | |
| background-position: center; | |
| background-repeat: no-repeat; | |
| } | |
| /* On hover, swap to the animated GIF so it plays from the first frame. */ | |
| .gif-bg:hover { | |
| background-image: url("https://media3.giphy.com/media/v1.Y2lkPTc5MGI3NjExcTIyN2RwbGdkc2w4YWxva3pudHl6M3BtdXV0eW00ZDMzMDdhMzExMSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/irCR68lB8tZDy8GKb0/giphy.gif"); | |
| } | |
| /* While pressed, drop the GIF entirely so the button reads as a transparent | |
| (ghost) button on click. */ | |
| .gif-bg:active { | |
| background-image: none; | |
| background-color: transparent; | |
| } | |
| @media (prefers-reduced-motion: reduce) { | |
| .gif-bg { | |
| background-image: linear-gradient(135deg, #6366f1 0%, #a855f7 50%, #06b6d4 100%) ; | |
| } | |
| } | |
| /* ===== Radial glow emanating from the center boundary between white/dark halves ===== */ | |
| .hero-radial-glow { | |
| position: absolute; | |
| inset: 0; | |
| pointer-events: none; | |
| z-index: 1; | |
| background: | |
| /* Primary large glow – soft indigo/violet */ | |
| radial-gradient(ellipse 70% 55% at 50% 0%, rgba(99, 102, 241, 0.35) 0%, rgba(79, 70, 229, 0.15) 30%, transparent 70%), | |
| /* Secondary wider cyan tint */ | |
| radial-gradient(ellipse 90% 45% at 50% 0%, rgba(6, 182, 212, 0.18) 0%, rgba(20, 184, 166, 0.06) 40%, transparent 75%), | |
| /* Tight bright core */ | |
| radial-gradient(ellipse 40% 30% at 50% 0%, rgba(168, 85, 247, 0.25) 0%, transparent 60%); | |
| } | |
| /* The redesigned glowing horizon */ | |
| .hero-bloom { | |
| /* Brand color variables — luminous indigo/periwinkle. | |
| The inner basin is a soft periwinkle (not near-white), so the bottom of | |
| the screen fills with gentle colour instead of reading as white space. */ | |
| --bloom-inner-start: #c7d2fe; | |
| --bloom-inner-mid: #818cf8; | |
| --bloom-arch-core: #4f46e5; | |
| --bloom-arch-dark: #3730a3; | |
| /* Cursor influence — driven from JS, defaults keep the bloom centered */ | |
| --bloom-mx: 0; | |
| --bloom-my: 0; | |
| /* Extra downward shift of the gradient centre. 0% on the landing hero; | |
| bumped up in chat mode (.is-chatting) so the arch finishes just above | |
| the chat input instead of rising into the middle of the screen. */ | |
| --bloom-push: 0%; | |
| position: absolute; | |
| /* Overhang past the viewport bottom so the GSAP breathing translate (y: -8) | |
| never lifts the layer enough to reveal a white strip at the bottom edge. */ | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| bottom: -12%; | |
| overflow: hidden; | |
| pointer-events: none; | |
| z-index: 1; | |
| /* Origin at the bottom so the GSAP entrance grows upward from the floor */ | |
| transform-origin: bottom center; | |
| /* Entrance + breathing are driven by GSAP (see HeroSection.tsx). | |
| The two pseudo-element layers still drift via CSS for the liquid effect. */ | |
| } | |
| /* In chat mode, push the glow down so it sits just above the input. */ | |
| .hero-bloom.is-chatting { | |
| --bloom-push: 14%; | |
| } | |
| .hero-bloom::before, | |
| .hero-bloom::after { | |
| content: ""; | |
| position: absolute; | |
| inset: -10%; | |
| transform-origin: bottom center; | |
| pointer-events: none; | |
| } | |
| /* --- LIGHT LAYER A (Slightly left-biased) --- */ | |
| /* The gradient center is nudged by the cursor (--bloom-mx/--bloom-my) so the | |
| bright core of the arch leans toward wherever the mouse is. */ | |
| .hero-bloom::before { | |
| background: | |
| radial-gradient(ellipse 80% 60% at calc(48% + 5% * var(--bloom-mx)) calc(113% + 3% * var(--bloom-my) + var(--bloom-push)), | |
| transparent 83%, | |
| rgba(255, 255, 255, 0.8) 88%, | |
| transparent 93%), | |
| radial-gradient(ellipse 80% 60% at calc(48% + 5% * var(--bloom-mx)) calc(113% + 3% * var(--bloom-my) + var(--bloom-push)), | |
| var(--bloom-inner-start) 0%, | |
| var(--bloom-inner-mid) 45%, | |
| var(--bloom-arch-core) 72%, | |
| var(--bloom-arch-dark) 85%, | |
| transparent 92%); | |
| filter: blur(8px); | |
| animation: bloom-drift-left 11s ease-in-out infinite alternate; | |
| } | |
| /* --- LIGHT LAYER B (Slightly right-biased, opposite cursor lean for depth) --- */ | |
| .hero-bloom::after { | |
| background: | |
| radial-gradient(ellipse 82% 62% at calc(52% + 8% * var(--bloom-mx)) calc(116% + 4% * var(--bloom-my) + var(--bloom-push)), | |
| transparent 83%, | |
| rgba(255, 255, 255, 0.6) 88%, | |
| transparent 93%), | |
| radial-gradient(ellipse 82% 62% at calc(52% + 8% * var(--bloom-mx)) calc(116% + 4% * var(--bloom-my) + var(--bloom-push)), | |
| var(--bloom-inner-start) 0%, | |
| var(--bloom-inner-mid) 42%, | |
| var(--bloom-arch-core) 70%, | |
| var(--bloom-arch-dark) 84%, | |
| transparent 92%); | |
| filter: blur(10px); | |
| mix-blend-mode: multiply; | |
| animation: bloom-drift-right 15s ease-in-out infinite alternate; | |
| } | |
| /* White wash behind the headline that melts smoothly into the dark — no hard | |
| seam. Solid white up top, fading fully transparent before the bloom. */ | |
| .hero-top-wash { | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| height: 64%; | |
| z-index: 2; | |
| pointer-events: none; | |
| background: linear-gradient( | |
| to bottom, | |
| #ffffff 0%, | |
| #ffffff 56%, | |
| rgba(255, 255, 255, 0.85) 72%, | |
| rgba(255, 255, 255, 0.4) 86%, | |
| rgba(255, 255, 255, 0) 100% | |
| ); | |
| } | |
| @keyframes bloom-drift-left { | |
| 0% { | |
| transform: translate(-1.5%, 1%) scale(0.97); | |
| filter: blur(8px) brightness(0.95); | |
| } | |
| 100% { | |
| transform: translate(1.5%, -1%) scale(1.03); | |
| filter: blur(11px) brightness(1.05); | |
| } | |
| } | |
| @keyframes bloom-drift-right { | |
| 0% { | |
| transform: translate(1.5%, -0.5%) scale(1.02); | |
| filter: blur(11px) brightness(1.03); | |
| } | |
| 100% { | |
| transform: translate(-1.5%, 0.5%) scale(0.98); | |
| filter: blur(8px) brightness(0.97); | |
| } | |
| } | |
| @media (prefers-reduced-motion: reduce) { | |
| .hero-bloom { | |
| animation: none; | |
| } | |
| .hero-bloom::before, | |
| .hero-bloom::after { | |
| animation: none; | |
| transform: none; | |
| filter: blur(8px); | |
| } | |
| } | |
| /* ===== Chat page ambient glow ===== */ | |
| .chat-page-glow { | |
| position: absolute; | |
| inset: 0; | |
| pointer-events: none; | |
| z-index: 0; | |
| background: | |
| /* Center ambient glow */ | |
| radial-gradient(ellipse 60% 50% at 50% 30%, rgba(99, 102, 241, 0.12) 0%, transparent 70%), | |
| /* Soft violet accent */ | |
| radial-gradient(ellipse 50% 40% at 60% 60%, rgba(139, 92, 246, 0.08) 0%, transparent 65%), | |
| /* Subtle cyan tint */ | |
| radial-gradient(ellipse 45% 35% at 35% 50%, rgba(6, 182, 212, 0.06) 0%, transparent 60%); | |
| } | |
| @keyframes gradientShift { | |
| 0% { | |
| background-position: 0% 50%; | |
| } | |
| 50% { | |
| background-position: 100% 50%; | |
| } | |
| 100% { | |
| background-position: 0% 50%; | |
| } | |
| } | |
| /* Graceful fallback for browsers or users who preferred reduced motion */ | |
| @media (prefers-reduced-motion: reduce) { | |
| .gif-clipped-word { | |
| background-image: linear-gradient(135deg, #ffffff 0%, #cbd5e1 100%) ; | |
| background-size: 100% 100% ; | |
| animation: none ; | |
| } | |
| } | |
| .aurora-bg { | |
| position: absolute; | |
| inset: 0; | |
| overflow: hidden; | |
| /* No background-color here – parent already sets it */ | |
| background-image: | |
| /* Left side soft glow - Modern Teal/Cyan */ | |
| radial-gradient(ellipse 60% 60% at -10% 30%, rgba(20, 184, 166, 0.16) 0%, rgba(13, 148, 136, 0.04) 50%, transparent 90%), | |
| /* Right side soft glow - Sophisticated Violet/Purple */ | |
| radial-gradient(ellipse 60% 60% at 110% 40%, rgba(168, 85, 247, 0.15) 0%, rgba(139, 92, 246, 0.04) 50%, transparent 90%), | |
| /* Center bottom soft blue ambient light */ | |
| radial-gradient(ellipse 70% 50% at 50% 100%, rgba(59, 130, 246, 0.14) 0%, rgba(29, 78, 216, 0.02) 60%, transparent 100%); | |
| } | |
| .aurora-bg::before { | |
| content: ""; | |
| position: absolute; | |
| inset: -15%; | |
| background: | |
| /* Floating cyan mist */ | |
| radial-gradient(ellipse 40% 40% at 30% 45%, rgba(6, 182, 212, 0.18) 0%, transparent 70%), | |
| /* Floating violet mist */ | |
| radial-gradient(ellipse 40% 40% at 70% 55%, rgba(139, 92, 246, 0.16) 0%, transparent 70%), | |
| /* Floating blue deep ambient */ | |
| radial-gradient(ellipse 45% 45% at 50% 75%, rgba(59, 130, 246, 0.12) 0%, transparent 75%); | |
| filter: blur(60px); | |
| animation: auroraFloat 20s ease-in-out infinite alternate; | |
| } | |
| .aurora-bg::after { | |
| content: ""; | |
| position: absolute; | |
| inset: 0; | |
| opacity: 0.18; | |
| pointer-events: none; | |
| background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)' opacity='0.35'/%3E%3C/svg%3E"); | |
| } | |
| @keyframes auroraFloat { | |
| from { | |
| transform: translate3d(-2%, 1%, 0) scale(1); | |
| opacity: 0.75; | |
| } | |
| to { | |
| transform: translate3d(2%, -2%, 0) scale(1.08); | |
| opacity: 1; | |
| } | |
| } | |