| @tailwind base; |
| @tailwind components; |
| @tailwind utilities; |
|
|
| @layer base { |
| :root { |
| |
| --background: 220 30% 4%; |
| --foreground: 210 30% 95%; |
| --card: 220 24% 7%; |
| --card-foreground: 210 30% 95%; |
| --primary: 172 82% 44%; |
| --primary-foreground: 220 30% 4%; |
| --secondary: 220 20% 13%; |
| --secondary-foreground: 210 20% 92%; |
| --muted: 220 18% 16%; |
| --muted-foreground: 210 12% 52%; |
| --accent: 280 72% 60%; |
| --accent-foreground: 210 30% 98%; |
| --destructive: 0 74% 54%; |
| --destructive-foreground: 210 30% 98%; |
| --border: 220 20% 16%; |
| --input: 220 20% 16%; |
| --ring: 172 82% 52%; |
| --radius: 0.875rem; |
|
|
| |
| --strat-experimental: 280 70% 55%; |
| --strat-personalized: 45 85% 55%; |
| --strat-proven: 172 75% 42%; |
|
|
| |
| --evidence-unresolved: 0 0% 45%; |
| --evidence-observed: 45 70% 50%; |
| --evidence-probable: 200 70% 52%; |
| --evidence-experimental: 172 75% 42%; |
|
|
| |
| --spinor-blue: 200 90% 60%; |
| --spinor-violet: 255 80% 75%; |
| --spinor-green: 152 70% 55%; |
| --spinor-gold: 43 95% 60%; |
| --spinor-red: 0 80% 70%; |
| --spinor-gray: 215 15% 60%; |
|
|
| |
| --glass-bg: 185 25% 7%; |
| --glass-border: 185 20% 18%; |
| --glass-highlight: 0 0% 100%; |
| --gradient-aurora-1: 172 80% 40%; |
| --gradient-aurora-2: 280 70% 55%; |
| --gradient-aurora-3: 200 90% 60%; |
| } |
|
|
| .light { |
| color-scheme: light; |
| --background: 180 30% 97%; |
| --foreground: 185 35% 8%; |
| --card: 0 0% 100%; |
| --card-foreground: 185 35% 8%; |
| --primary: 172 70% 35%; |
| --primary-foreground: 0 0% 100%; |
| --secondary: 180 20% 92%; |
| --secondary-foreground: 185 35% 8%; |
| --muted: 180 15% 90%; |
| --muted-foreground: 185 10% 42%; |
| --accent: 280 60% 50%; |
| --accent-foreground: 0 0% 100%; |
| --destructive: 0 72% 50%; |
| --destructive-foreground: 0 0% 100%; |
| --border: 180 15% 86%; |
| --input: 180 15% 86%; |
| --ring: 172 70% 35%; |
| } |
| } |
|
|
| @layer base { |
| * { |
| @apply border-border; |
| } |
|
|
| body { |
| @apply bg-background text-foreground; |
| -webkit-font-smoothing: antialiased; |
| -moz-osx-font-smoothing: grayscale; |
| font-feature-settings: "ss01", "cv01", "cv02"; |
| line-height: 1.6; |
| background-color: hsl(var(--background)); |
| background-image: |
| radial-gradient(ellipse 80% 50% at 50% -20%, hsl(var(--primary) / 0.12), transparent), |
| radial-gradient(ellipse 60% 40% at 80% 100%, hsl(var(--accent) / 0.07), transparent), |
| radial-gradient(ellipse 50% 40% at 20% 100%, hsl(200 90% 60% / 0.05), transparent); |
| background-attachment: fixed; |
| } |
|
|
| .noise-overlay { |
| position: fixed; |
| inset: 0; |
| pointer-events: none; |
| z-index: 9999; |
| opacity: 0.04; |
| background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 400 400' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); |
| background-repeat: repeat; |
| background-size: 200px 200px; |
| } |
|
|
| @media (prefers-reduced-motion: no-preference) { |
| * { |
| transition: background-color 0.25s, border-color 0.25s, box-shadow 0.25s, transform 0.25s; |
| } |
| } |
|
|
| .light body { |
| @apply bg-background text-foreground; |
| } |
| } |
|
|
| @layer components { |
|
|
| |
| .card { |
| @apply rounded-2xl border border-border bg-card text-card-foreground; |
| box-shadow: |
| 0 1px 2px 0 hsl(0 0% 0% / 0.25), |
| 0 1px 1px 0 hsl(0 0% 0% / 0.15), |
| inset 0 1px 0 0 hsl(0 0% 100% / 0.04); |
| position: relative; |
| overflow: hidden; |
| } |
|
|
| .card::before { |
| content: ""; |
| position: absolute; |
| inset: 0; |
| background: radial-gradient(circle at 50% 0%, hsl(var(--primary) / 0.08), transparent 70%); |
| opacity: 0; |
| transition: opacity 0.5s ease; |
| pointer-events: none; |
| } |
|
|
| .card:hover::before { |
| opacity: 1; |
| } |
|
|
| .card-hover { |
| @apply transition-all duration-300; |
| } |
|
|
| .card-hover:hover { |
| box-shadow: |
| 0 8px 24px -8px hsl(0 0% 0% / 0.45), |
| 0 4px 8px -4px hsl(0 0% 0% / 0.3), |
| 0 0 40px -10px hsl(var(--primary) / 0.18), |
| inset 0 1px 0 0 hsl(0 0% 100% / 0.05); |
| transform: translateY(-3px); |
| border-color: hsl(var(--primary) / 0.25); |
| } |
|
|
| |
| .glass-card { |
| @apply rounded-2xl border border-white/[0.06] bg-white/[0.025] backdrop-blur-xl; |
| box-shadow: |
| 0 0 40px -10px hsl(var(--primary) / 0.08), |
| 0 2px 8px -2px hsl(0 0% 0% / 0.3), |
| inset 0 1px 0 0 hsl(0 0% 100% / 0.04); |
| } |
|
|
| .glass-card-hover { |
| @apply transition-all duration-500; |
| } |
|
|
| .glass-card-hover:hover { |
| box-shadow: |
| 0 0 60px -10px hsl(var(--primary) / 0.18), |
| 0 4px 16px -4px hsl(0 0% 0% / 0.4), |
| inset 0 1px 0 0 hsl(0 0% 100% / 0.06); |
| transform: translateY(-3px); |
| border-color: hsl(var(--primary) / 0.15); |
| } |
|
|
| |
| .btn { |
| @apply inline-flex items-center justify-center rounded-lg text-sm font-semibold transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50; |
| letter-spacing: 0.01em; |
| } |
|
|
| .btn-primary { |
| @apply h-10 px-5 py-2; |
| background: linear-gradient(135deg, hsl(var(--primary)) 0%, hsl(var(--primary) / 0.92) 100%); |
| color: hsl(var(--primary-foreground)); |
| box-shadow: |
| 0 4px 14px -2px hsl(var(--primary) / 0.4), |
| 0 1px 3px hsl(0 0% 0% / 0.25), |
| inset 0 1px 0 0 hsl(0 0% 100% / 0.15); |
| } |
|
|
| .btn-primary:hover { |
| background: linear-gradient(135deg, hsl(var(--primary)) 0%, hsl(var(--primary)) 100%); |
| box-shadow: |
| 0 8px 22px -4px hsl(var(--primary) / 0.5), |
| 0 2px 4px hsl(0 0% 0% / 0.3), |
| inset 0 1px 0 0 hsl(0 0% 100% / 0.2); |
| transform: translateY(-1.5px); |
| } |
|
|
| .btn-secondary { |
| @apply bg-secondary text-secondary-foreground hover:bg-secondary/80 h-10 px-5 py-2; |
| } |
|
|
| .btn-outline { |
| @apply h-10 px-5 py-2; |
| border: 1px solid hsl(var(--input)); |
| background: hsl(var(--card) / 0.4); |
| color: hsl(var(--foreground)); |
| box-shadow: inset 0 1px 0 0 hsl(0 0% 100% / 0.04); |
| } |
|
|
| .btn-outline:hover { |
| border-color: hsl(var(--primary) / 0.35); |
| background: hsl(var(--primary) / 0.08); |
| color: hsl(var(--primary)); |
| box-shadow: 0 0 24px -8px hsl(var(--primary) / 0.25), inset 0 1px 0 0 hsl(0 0% 100% / 0.05); |
| } |
|
|
| .btn-danger { |
| @apply bg-destructive text-destructive-foreground hover:bg-destructive/90 h-10 px-5 py-2; |
| } |
|
|
| .btn-ghost { |
| @apply h-9 px-3 py-1.5 text-muted-foreground hover:text-foreground; |
| } |
|
|
| .btn-ghost:hover { |
| background: hsl(var(--primary) / 0.08); |
| } |
|
|
| |
| .input { |
| @apply flex h-10 w-full rounded-lg border border-input bg-background px-4 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 transition-all; |
| box-shadow: inset 0 1px 2px 0 hsl(0 0% 0% / 0.15); |
| } |
|
|
| .input:focus, |
| .input:focus-visible { |
| border-color: hsl(var(--primary) / 0.5); |
| box-shadow: |
| 0 0 0 2px hsl(var(--primary) / 0.15), |
| inset 0 1px 2px 0 hsl(0 0% 0% / 0.15); |
| } |
|
|
| .badge { |
| @apply inline-flex items-center rounded-full border px-2.5 py-0.5 text-[11px] font-semibold tracking-wide transition-colors; |
| box-shadow: inset 0 1px 0 0 hsl(0 0% 100% / 0.05); |
| } |
|
|
| .status-dot { |
| @apply inline-block h-2 w-2 rounded-full; |
| } |
|
|
| .done-section-label { |
| @apply text-xs font-semibold uppercase tracking-wider text-muted-foreground; |
| } |
|
|
| |
| .llm-badge { |
| @apply inline-flex items-center gap-1.5 rounded-full border px-2.5 py-1 text-[10px] font-semibold; |
| } |
|
|
| .llm-badge-live { |
| @apply border-emerald-500/30 bg-emerald-500/10 text-emerald-400; |
| } |
|
|
| .llm-badge-offline { |
| @apply border-muted-foreground/20 bg-muted/10 text-muted-foreground; |
| } |
|
|
| .llm-badge-thinking { |
| @apply border-violet-500/30 bg-violet-500/10 text-violet-400; |
| } |
|
|
| |
| .evidence-bar { |
| @apply relative h-1.5 w-full overflow-hidden rounded-full bg-muted; |
| } |
|
|
| .evidence-bar-fill { |
| @apply absolute left-0 top-0 h-full rounded-full transition-all duration-700; |
| } |
|
|
| |
| .strat-glow-experimental { |
| box-shadow: 0 0 20px -4px hsl(var(--strat-experimental) / 0.4); |
| } |
|
|
| .strat-glow-personalized { |
| box-shadow: 0 0 20px -4px hsl(var(--strat-personalized) / 0.4); |
| } |
|
|
| .strat-glow-proven { |
| box-shadow: 0 0 20px -4px hsl(var(--strat-proven) / 0.4); |
| } |
|
|
| |
| .organic-border { |
| border-radius: 42% 58% 56% 44% / 48% 42% 58% 52%; |
| } |
|
|
| .organic-border-2 { |
| border-radius: 60% 40% 52% 48% / 42% 58% 42% 58%; |
| } |
|
|
| |
| .leaderboard-row { |
| @apply relative flex items-center gap-4 rounded-xl border border-transparent px-4 py-3 transition-all duration-300; |
| } |
|
|
| .leaderboard-row:hover { |
| @apply border-primary/20 bg-primary/5; |
| } |
|
|
| |
| .hypothesis-card { |
| @apply relative overflow-hidden rounded-2xl border border-border bg-card p-5 transition-all duration-500; |
| box-shadow: 0 2px 8px -2px hsl(0 0% 0% / 0.3); |
| } |
|
|
| .hypothesis-card::before { |
| content: ""; |
| position: absolute; |
| inset: 0; |
| background: radial-gradient(circle at 50% 0%, hsl(var(--primary) / 0.08), transparent 70%); |
| opacity: 0; |
| transition: opacity 0.5s; |
| pointer-events: none; |
| } |
|
|
| .hypothesis-card:hover::before { |
| opacity: 1; |
| } |
|
|
| .hypothesis-card:hover { |
| transform: translateY(-3px); |
| border-color: hsl(var(--primary) / 0.25); |
| box-shadow: 0 8px 24px -4px hsl(0 0% 0% / 0.4), 0 0 30px -8px hsl(var(--primary) / 0.15); |
| } |
|
|
| |
| .stat-card { |
| @apply rounded-xl border border-border bg-card p-4 transition-all duration-300; |
| } |
|
|
| .stat-card:hover { |
| @apply border-primary/20; |
| box-shadow: 0 0 20px -4px hsl(var(--primary) / 0.1); |
| } |
|
|
| |
| .section-divider { |
| @apply h-px w-full; |
| background: linear-gradient(90deg, transparent, hsl(var(--border)), transparent); |
| } |
|
|
| |
| .aurora-bg { |
| position: fixed; |
| inset: 0; |
| pointer-events: none; |
| z-index: 0; |
| background: |
| radial-gradient(45% 35% at 15% 20%, hsl(var(--gradient-aurora-1) / 0.10), transparent 70%), |
| radial-gradient(40% 35% at 85% 30%, hsl(var(--gradient-aurora-2) / 0.08), transparent 70%), |
| radial-gradient(45% 40% at 50% 90%, hsl(var(--gradient-aurora-3) / 0.07), transparent 70%), |
| radial-gradient(60% 50% at 90% 80%, hsl(var(--accent) / 0.04), transparent 70%); |
| filter: blur(40px); |
| animation: aurora-drift 20s ease-in-out infinite alternate; |
| } |
|
|
| @keyframes aurora-drift { |
| 0% { |
| transform: translate3d(0, 0, 0) scale(1); |
| opacity: 0.6; |
| } |
|
|
| 100% { |
| transform: translate3d(2%, -1%, 0) scale(1.05); |
| opacity: 1; |
| } |
| } |
|
|
| |
| .llm-thinking-dots { |
| display: inline-flex; |
| gap: 4px; |
| } |
|
|
| .llm-thinking-dots span { |
| width: 6px; |
| height: 6px; |
| border-radius: 50%; |
| background: hsl(var(--accent)); |
| animation: llm-dot-bounce 1.4s ease-in-out infinite; |
| } |
|
|
| .llm-thinking-dots span:nth-child(2) { |
| animation-delay: 0.2s; |
| } |
|
|
| .llm-thinking-dots span:nth-child(3) { |
| animation-delay: 0.4s; |
| } |
|
|
| @keyframes llm-dot-bounce { |
|
|
| 0%, |
| 80%, |
| 100% { |
| transform: scale(0.6); |
| opacity: 0.4; |
| } |
|
|
| 40% { |
| transform: scale(1); |
| opacity: 1; |
| } |
| } |
|
|
| |
| .gradient-text { |
| background: linear-gradient(135deg, hsl(var(--primary)), hsl(var(--accent))); |
| -webkit-background-clip: text; |
| background-clip: text; |
| -webkit-text-fill-color: transparent; |
| } |
|
|
| .gradient-text-gold { |
| background: linear-gradient(135deg, hsl(var(--spinor-gold)), hsl(43 95% 70%)); |
| -webkit-background-clip: text; |
| background-clip: text; |
| -webkit-text-fill-color: transparent; |
| } |
| } |
|
|
| @layer utilities { |
| @keyframes fade-in { |
| from { |
| opacity: 0; |
| } |
|
|
| to { |
| opacity: 1; |
| } |
| } |
|
|
| @keyframes fade-in-up { |
| from { |
| opacity: 0; |
| transform: translateY(16px); |
| } |
|
|
| to { |
| opacity: 1; |
| transform: translateY(0); |
| } |
| } |
|
|
| @keyframes pulse-working { |
|
|
| 0%, |
| 100% { |
| opacity: 1; |
| } |
|
|
| 50% { |
| opacity: 0.4; |
| } |
| } |
|
|
| @keyframes grow-up { |
| from { |
| transform: scaleY(0); |
| opacity: 0; |
| } |
|
|
| to { |
| transform: scaleY(1); |
| opacity: 1; |
| } |
| } |
|
|
| @keyframes glow-pulse { |
|
|
| 0%, |
| 100% { |
| box-shadow: 0 0 20px -4px hsl(var(--primary) / 0.3); |
| } |
|
|
| 50% { |
| box-shadow: 0 0 40px -4px hsl(var(--primary) / 0.5); |
| } |
| } |
|
|
| @keyframes shimmer { |
| 0% { |
| background-position: -200% 0; |
| } |
|
|
| 100% { |
| background-position: 200% 0; |
| } |
| } |
|
|
| @keyframes orbit { |
| from { |
| transform: rotate(0deg) translateX(120px) rotate(0deg); |
| } |
|
|
| to { |
| transform: rotate(360deg) translateX(120px) rotate(-360deg); |
| } |
| } |
|
|
| .animate-fade-in { |
| animation: fade-in 0.4s ease-out forwards; |
| } |
|
|
| .animate-fade-in-up { |
| animation: fade-in-up 0.5s ease-out forwards; |
| } |
|
|
| .animate-pulse-working { |
| animation: pulse-working 2s ease-in-out infinite; |
| } |
|
|
| .animate-grow-up { |
| animation: grow-up 0.6s ease-out forwards; |
| transform-origin: bottom; |
| } |
|
|
| .animate-glow-pulse { |
| animation: glow-pulse 3s ease-in-out infinite; |
| } |
|
|
| .animate-orbit { |
| animation: orbit 20s linear infinite; |
| } |
|
|
| @keyframes slide-in-left { |
| from { |
| opacity: 0; |
| transform: translateX(-12px); |
| } |
|
|
| to { |
| opacity: 1; |
| transform: translateX(0); |
| } |
| } |
|
|
| .animate-slide-in-left { |
| animation: slide-in-left 0.4s ease-out forwards; |
| } |
|
|
| .shimmer-bg { |
| background: linear-gradient(90deg, transparent 0%, hsl(var(--primary) / 0.05) 50%, transparent 100%); |
| background-size: 200% 100%; |
| animation: shimmer 3s ease-in-out infinite; |
| } |
|
|
| .scrollbar-thin::-webkit-scrollbar { |
| width: 6px; |
| height: 6px; |
| } |
|
|
| .scrollbar-thin::-webkit-scrollbar-track { |
| background: transparent; |
| } |
|
|
| .scrollbar-thin::-webkit-scrollbar-thumb { |
| @apply bg-muted-foreground/30 rounded-full; |
| } |
|
|
| .scrollbar-thin::-webkit-scrollbar-thumb:hover { |
| @apply bg-muted-foreground/50; |
| } |
|
|
| .text-balance { |
| text-wrap: balance; |
| } |
|
|
| .text-pretty { |
| text-wrap: pretty; |
| } |
|
|
| |
| .spinor-canvas { |
| background: radial-gradient(circle at 50% 50%, hsl(var(--spinor-gold) / 0.04), transparent 65%); |
| } |
|
|
| .spinor-aurora { |
| position: absolute; |
| inset: 0; |
| pointer-events: none; |
| background: |
| radial-gradient(60% 50% at 20% 20%, hsl(var(--spinor-violet) / 0.08), transparent 70%), |
| radial-gradient(50% 50% at 80% 30%, hsl(var(--spinor-blue) / 0.07), transparent 70%), |
| radial-gradient(55% 55% at 70% 80%, hsl(var(--spinor-green) / 0.06), transparent 70%); |
| animation: spinor-aurora-shift 18s ease-in-out infinite alternate; |
| } |
|
|
| @keyframes spinor-aurora-shift { |
| 0% { |
| transform: translate3d(0, 0, 0) scale(1); |
| opacity: 0.7; |
| } |
|
|
| 100% { |
| transform: translate3d(2%, -2%, 0) scale(1.05); |
| opacity: 1; |
| } |
| } |
|
|
| .spinor-seed-pulse { |
| animation: spinor-seed-pulse 1.6s ease-in-out infinite; |
| } |
|
|
| @keyframes spinor-seed-pulse { |
|
|
| 0%, |
| 100% { |
| transform: scale(1); |
| box-shadow: 0 0 0 0 hsl(var(--spinor-gold) / 0.5); |
| } |
|
|
| 50% { |
| transform: scale(1.12); |
| box-shadow: 0 0 0 12px hsl(var(--spinor-gold) / 0); |
| } |
| } |
|
|
| .spinor-core-pulse { |
| transform-origin: center; |
| transform-box: fill-box; |
| animation: spinor-core-pulse 3.5s ease-in-out infinite; |
| } |
|
|
| @keyframes spinor-core-pulse { |
|
|
| 0%, |
| 100% { |
| transform: scale(1); |
| opacity: 0.3; |
| } |
|
|
| 50% { |
| transform: scale(1.18); |
| opacity: 0.5; |
| } |
| } |
|
|
| .spinor-node-pulse { |
| transform-origin: center; |
| transform-box: fill-box; |
| animation: spinor-node-pulse 2.8s ease-in-out infinite; |
| } |
|
|
| @keyframes spinor-node-pulse { |
|
|
| 0%, |
| 100% { |
| transform: scale(1); |
| opacity: 0.45; |
| } |
|
|
| 50% { |
| transform: scale(1.35); |
| opacity: 0.1; |
| } |
| } |
|
|
| .spinor-root { |
| stroke-dashoffset: 0; |
| animation: spinor-root-extend 6s ease-in-out infinite alternate; |
| } |
|
|
| @keyframes spinor-root-extend { |
| 0% { |
| stroke-dashoffset: 0; |
| opacity: 0.4; |
| } |
|
|
| 100% { |
| stroke-dashoffset: -14; |
| opacity: 0.7; |
| } |
| } |
|
|
| .spinor-stem { |
| animation: spinor-stem-sway 7s ease-in-out infinite alternate; |
| transform-origin: center; |
| } |
|
|
| @keyframes spinor-stem-sway { |
| 0% { |
| opacity: 0.35; |
| } |
|
|
| 100% { |
| opacity: 0.6; |
| } |
| } |
|
|
| .spinor-node { |
| transition: transform 0.25s ease; |
| } |
|
|
| .spinor-node:hover { |
| transform: scale(1.12); |
| } |
|
|
| .spinor-node-label { |
| font-size: 10px; |
| font-weight: 500; |
| pointer-events: none; |
| text-shadow: 0 0 6px hsl(var(--background)); |
| } |
|
|
| |
| |
| |
|
|
| |
| @keyframes stream-in { |
| from { |
| opacity: 0; |
| transform: translateY(4px); |
| filter: blur(2px); |
| } |
|
|
| to { |
| opacity: 1; |
| transform: translateY(0); |
| filter: blur(0); |
| } |
| } |
|
|
| .stream-text { |
| animation: stream-in 0.3s ease-out forwards; |
| } |
|
|
| .stream-cursor::after { |
| content: "β"; |
| animation: cursor-blink 0.8s steps(2) infinite; |
| color: hsl(var(--accent)); |
| margin-left: 2px; |
| } |
|
|
| @keyframes cursor-blink { |
|
|
| 0%, |
| 50% { |
| opacity: 1; |
| } |
|
|
| 51%, |
| 100% { |
| opacity: 0; |
| } |
| } |
|
|
| |
| .bento-grid { |
| display: grid; |
| grid-template-columns: repeat(4, 1fr); |
| gap: 1rem; |
| } |
|
|
| .bento-item { |
| @apply rounded-2xl border border-border bg-card p-5 transition-all duration-500; |
| box-shadow: 0 2px 8px -2px hsl(0 0% 0% / 0.3); |
| } |
|
|
| .bento-item:hover { |
| transform: translateY(-3px); |
| border-color: hsl(var(--primary) / 0.2); |
| box-shadow: 0 8px 24px -4px hsl(0 0% 0% / 0.4), 0 0 30px -8px hsl(var(--primary) / 0.12); |
| } |
|
|
| .bento-span-2 { |
| grid-column: span 2; |
| } |
|
|
| .bento-span-3 { |
| grid-column: span 3; |
| } |
|
|
| .bento-span-4 { |
| grid-column: span 4; |
| } |
|
|
| .bento-row-2 { |
| grid-row: span 2; |
| } |
|
|
| @media (max-width: 768px) { |
| .bento-grid { |
| grid-template-columns: repeat(2, 1fr); |
| } |
|
|
| .bento-span-3, |
| .bento-span-4 { |
| grid-column: span 2; |
| } |
| } |
|
|
| |
| .skeleton { |
| @apply rounded-lg; |
| background: linear-gradient(90deg, |
| hsl(var(--muted)) 0%, |
| hsl(var(--muted) / 0.5) 50%, |
| hsl(var(--muted)) 100%); |
| background-size: 200% 100%; |
| animation: skeleton-shimmer 1.5s ease-in-out infinite; |
| } |
|
|
| @keyframes skeleton-shimmer { |
| 0% { |
| background-position: 200% 0; |
| } |
|
|
| 100% { |
| background-position: -200% 0; |
| } |
| } |
|
|
| .skeleton-text { |
| @apply rounded h-4; |
| background: linear-gradient(90deg, |
| hsl(var(--muted)) 0%, |
| hsl(var(--muted) / 0.5) 50%, |
| hsl(var(--muted)) 100%); |
| background-size: 200% 100%; |
| animation: skeleton-shimmer 1.5s ease-in-out infinite; |
| } |
|
|
| |
| .evidence-meter { |
| position: relative; |
| height: 8px; |
| width: 100%; |
| border-radius: 9999px; |
| background: hsl(var(--muted)); |
| overflow: hidden; |
| } |
|
|
| .evidence-meter-fill { |
| position: absolute; |
| left: 0; |
| top: 0; |
| height: 100%; |
| border-radius: 9999px; |
| transition: width 1.2s cubic-bezier(0.4, 0, 0.2, 1); |
| background: linear-gradient(90deg, hsl(var(--primary)), hsl(var(--accent))); |
| box-shadow: 0 0 12px hsl(var(--primary) / 0.4); |
| } |
|
|
| .evidence-meter-fill::after { |
| content: ""; |
| position: absolute; |
| inset: 0; |
| background: linear-gradient(90deg, transparent, hsl(0 0% 100% / 0.2), transparent); |
| background-size: 200% 100%; |
| animation: shimmer 2s ease-in-out infinite; |
| } |
|
|
| |
| .radar-grid { |
| stroke: hsl(var(--border)); |
| stroke-width: 1; |
| fill: none; |
| } |
|
|
| .radar-axis { |
| stroke: hsl(var(--border) / 0.5); |
| stroke-width: 1; |
| stroke-dasharray: 2 4; |
| } |
|
|
| .radar-fill { |
| fill: hsl(var(--primary) / 0.15); |
| stroke: hsl(var(--primary)); |
| stroke-width: 2; |
| transition: all 0.8s cubic-bezier(0.4, 0, 0.2, 1); |
| filter: drop-shadow(0 0 6px hsl(var(--primary) / 0.3)); |
| } |
|
|
| .radar-point { |
| fill: hsl(var(--primary)); |
| stroke: hsl(var(--background)); |
| stroke-width: 2; |
| transition: all 0.8s cubic-bezier(0.4, 0, 0.2, 1); |
| } |
|
|
| .radar-label { |
| font-size: 10px; |
| font-weight: 600; |
| fill: hsl(var(--muted-foreground)); |
| text-anchor: middle; |
| } |
|
|
| |
| .particle-canvas { |
| position: absolute; |
| inset: 0; |
| pointer-events: none; |
| } |
|
|
| |
| .cmdk-overlay { |
| position: fixed; |
| inset: 0; |
| z-index: 100; |
| background: hsl(0 0% 0% / 0.6); |
| backdrop-filter: blur(8px); |
| animation: fade-in 0.15s ease-out; |
| } |
|
|
| .cmdk-panel { |
| position: fixed; |
| top: 20%; |
| left: 50%; |
| transform: translateX(-50%); |
| width: 90%; |
| max-width: 560px; |
| z-index: 101; |
| @apply rounded-2xl border border-border bg-card; |
| box-shadow: 0 20px 60px -10px hsl(0 0% 0% / 0.5), 0 0 40px -10px hsl(var(--primary) / 0.1); |
| animation: cmdk-in 0.2s cubic-bezier(0.4, 0, 0.2, 1); |
| } |
|
|
| @keyframes cmdk-in { |
| from { |
| opacity: 0; |
| transform: translateX(-50%) translateY(-12px) scale(0.96); |
| } |
|
|
| to { |
| opacity: 1; |
| transform: translateX(-50%) translateY(0) scale(1); |
| } |
| } |
|
|
| .cmdk-item { |
| @apply flex items-center gap-3 rounded-lg px-3 py-2.5 text-sm transition-all cursor-pointer; |
| } |
|
|
| .cmdk-item:hover, |
| .cmdk-item-active { |
| @apply bg-primary/10 text-primary; |
| } |
|
|
| |
| .page-enter { |
| animation: page-enter 0.4s cubic-bezier(0.4, 0, 0.2, 1) forwards; |
| } |
|
|
| @keyframes page-enter { |
| from { |
| opacity: 0; |
| transform: translateY(12px) scale(0.99); |
| filter: blur(4px); |
| } |
|
|
| to { |
| opacity: 1; |
| transform: translateY(0) scale(1); |
| filter: blur(0); |
| } |
| } |
|
|
| |
| .fab { |
| position: fixed; |
| bottom: 24px; |
| right: 24px; |
| z-index: 50; |
| @apply flex items-center justify-center rounded-full; |
| width: 56px; |
| height: 56px; |
| background: linear-gradient(135deg, hsl(var(--primary)), hsl(var(--accent))); |
| box-shadow: 0 8px 24px -4px hsl(var(--primary) / 0.4), 0 4px 8px hsl(0 0% 0% / 0.3); |
| transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); |
| } |
|
|
| .fab:hover { |
| transform: scale(1.1) rotate(90deg); |
| box-shadow: 0 12px 32px -4px hsl(var(--primary) / 0.5), 0 6px 12px hsl(0 0% 0% / 0.4); |
| } |
|
|
| |
| .ripple-container { |
| position: relative; |
| overflow: hidden; |
| } |
|
|
| .ripple { |
| position: absolute; |
| border-radius: 50%; |
| background: hsl(0 0% 100% / 0.3); |
| transform: scale(0); |
| animation: ripple-out 0.6s ease-out; |
| pointer-events: none; |
| } |
|
|
| @keyframes ripple-out { |
| to { |
| transform: scale(4); |
| opacity: 0; |
| } |
| } |
|
|
| |
| .glow-border { |
| position: relative; |
| } |
|
|
| .glow-border::before { |
| content: ""; |
| position: absolute; |
| inset: -1px; |
| border-radius: inherit; |
| padding: 1px; |
| background: linear-gradient(135deg, hsl(var(--primary) / 0.4), hsl(var(--accent) / 0.4), hsl(var(--spinor-blue) / 0.4)); |
| -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); |
| -webkit-mask-composite: xor; |
| mask-composite: exclude; |
| animation: glow-border-rotate 4s linear infinite; |
| } |
|
|
| @keyframes glow-border-rotate { |
| 0% { |
| filter: hue-rotate(0deg); |
| } |
|
|
| 100% { |
| filter: hue-rotate(360deg); |
| } |
| } |
|
|
| |
| .mission-hero { |
| position: relative; |
| overflow: hidden; |
| @apply rounded-3xl border border-border; |
| background: |
| radial-gradient(ellipse 100% 60% at 50% 0%, hsl(var(--primary) / 0.12), transparent), |
| radial-gradient(ellipse 80% 50% at 80% 100%, hsl(var(--accent) / 0.08), transparent), |
| hsl(var(--card)); |
| } |
|
|
| .mission-hero::before { |
| content: ""; |
| position: absolute; |
| top: 0; |
| left: 0; |
| right: 0; |
| height: 2px; |
| background: linear-gradient(90deg, transparent, hsl(var(--primary)), hsl(var(--accent)), transparent); |
| animation: shimmer 3s ease-in-out infinite; |
| } |
|
|
| |
| .lineage-tree { |
| position: relative; |
| padding-left: 24px; |
| } |
|
|
| .lineage-branch { |
| position: relative; |
| padding-left: 24px; |
| padding-bottom: 16px; |
| } |
|
|
| .lineage-branch::before { |
| content: ""; |
| position: absolute; |
| left: 0; |
| top: 0; |
| bottom: 0; |
| width: 2px; |
| background: hsl(var(--border)); |
| } |
|
|
| .lineage-branch::after { |
| content: ""; |
| position: absolute; |
| left: 0; |
| top: 12px; |
| width: 20px; |
| height: 2px; |
| background: hsl(var(--border)); |
| } |
|
|
| .lineage-branch:last-child::before { |
| height: 12px; |
| } |
|
|
| .lineage-node { |
| @apply rounded-lg border border-border bg-card p-3 transition-all; |
| } |
|
|
| .lineage-node:hover { |
| border-color: hsl(var(--primary) / 0.3); |
| box-shadow: 0 0 16px -4px hsl(var(--primary) / 0.2); |
| } |
|
|
| .lineage-dot { |
| position: absolute; |
| left: -6px; |
| top: 10px; |
| width: 10px; |
| height: 10px; |
| border-radius: 50%; |
| background: hsl(var(--primary)); |
| box-shadow: 0 0 8px hsl(var(--primary) / 0.5); |
| } |
|
|
| |
| .progress-ring { |
| transform: rotate(-90deg); |
| } |
|
|
| .progress-ring-circle { |
| transition: stroke-dashoffset 1s cubic-bezier(0.4, 0, 0.2, 1); |
| stroke-linecap: round; |
| } |
|
|
| |
| .typing-indicator { |
| display: inline-flex; |
| align-items: center; |
| gap: 4px; |
| } |
|
|
| .typing-indicator span { |
| width: 8px; |
| height: 8px; |
| border-radius: 50%; |
| background: hsl(var(--accent)); |
| animation: typing-bounce 1.4s ease-in-out infinite; |
| } |
|
|
| .typing-indicator span:nth-child(2) { |
| animation-delay: 0.15s; |
| } |
|
|
| .typing-indicator span:nth-child(3) { |
| animation-delay: 0.3s; |
| } |
|
|
| @keyframes typing-bounce { |
|
|
| 0%, |
| 80%, |
| 100% { |
| transform: scale(0.6) translateY(0); |
| opacity: 0.4; |
| } |
|
|
| 40% { |
| transform: scale(1) translateY(-4px); |
| opacity: 1; |
| } |
| } |
|
|
| |
| .counter { |
| font-variant-numeric: tabular-nums; |
| transition: all 0.3s ease; |
| } |
|
|
| |
| @keyframes tag-pulse { |
|
|
| 0%, |
| 100% { |
| box-shadow: 0 0 0 0 hsl(var(--primary) / 0.3); |
| } |
|
|
| 50% { |
| box-shadow: 0 0 0 6px hsl(var(--primary) / 0); |
| } |
| } |
|
|
| .tag-pulse { |
| animation: tag-pulse 2s ease-in-out infinite; |
| } |
|
|
| |
| .slide-panel { |
| animation: slide-panel-in 0.3s cubic-bezier(0.4, 0, 0.2, 1) forwards; |
| } |
|
|
| @keyframes slide-panel-in { |
| from { |
| opacity: 0; |
| transform: translateX(100%); |
| } |
|
|
| to { |
| opacity: 1; |
| transform: translateX(0); |
| } |
| } |
|
|
| |
| .confetti-piece { |
| position: absolute; |
| width: 8px; |
| height: 8px; |
| animation: confetti-fall 3s ease-out forwards; |
| } |
|
|
| @keyframes confetti-fall { |
| 0% { |
| transform: translateY(-100px) rotate(0deg); |
| opacity: 1; |
| } |
|
|
| 100% { |
| transform: translateY(400px) rotate(720deg); |
| opacity: 0; |
| } |
| } |
|
|
| |
| .glass-input { |
| @apply rounded-xl border border-white/[0.06] bg-white/[0.03] backdrop-blur-xl; |
| transition: all 0.3s; |
| } |
|
|
| .glass-input:focus { |
| border-color: hsl(var(--primary) / 0.3); |
| box-shadow: 0 0 0 3px hsl(var(--primary) / 0.1); |
| } |
|
|
| |
| .scroll-reveal { |
| opacity: 0; |
| transform: translateY(20px); |
| transition: all 0.6s cubic-bezier(0.4, 0, 0.2, 1); |
| } |
|
|
| .scroll-reveal.visible { |
| opacity: 1; |
| transform: translateY(0); |
| } |
| } |