Spaces:
Running
Running
| @tailwind base; | |
| @tailwind components; | |
| @tailwind utilities; | |
| @layer base { | |
| /* LIGHT MODE — Warm Orange palette */ | |
| :root, | |
| :root[data-theme="light"] { | |
| /* Raw palette */ | |
| --bg-primary: #FFFBDC; | |
| --bg-secondary: #FFD3A5; | |
| --bg-card: #FFFFFF; | |
| --bg-card-hover: #FFF5E8; | |
| --accent-primary: #FF5900; | |
| --accent-secondary: #FF8237; | |
| --accent-muted: #FFAA6E; | |
| --text-primary: #1a0a00; | |
| --text-secondary: #7a4520; | |
| --text-muted: #FFAA6E; | |
| --text-accent: #FF5900; | |
| --border-default: rgba(255, 89, 0, 0.2); | |
| --border-hover: rgba(255, 89, 0, 0.5); | |
| --border-card: rgba(255, 130, 55, 0.2); | |
| --color-safe: #059669; | |
| --color-safe-bg: rgba(5, 150, 105, 0.1); | |
| --color-unsafe: #dc2626; | |
| --color-unsafe-bg: rgba(220, 38, 38, 0.1); | |
| --color-warning: #d97706; | |
| --color-warning-bg: rgba(217, 119, 6, 0.1); | |
| --color-info: #7a4520; | |
| --particle-primary: #FF8237; | |
| --particle-secondary: #FFAA6E; | |
| --particle-line: rgba(255, 89, 0, 0.25); | |
| --glass-bg: rgba(255, 251, 220, 0.85); | |
| --glass-border: rgba(255, 89, 0, 0.2); | |
| --glass-blur: blur(12px); | |
| --gradient-primary: linear-gradient(135deg, #FF5900 0%, #FF8237 100%); | |
| --gradient-hero: linear-gradient(135deg, #FF8237 0%, #FFFBDC 60%); | |
| --gradient-glow: 0 0 40px rgba(255, 89, 0, 0.25); | |
| --reward-positive: #059669; | |
| --reward-negative: #FF5900; | |
| --reward-neutral: #FFAA6E; | |
| /* Map to semantic tokens (HSL triplets used by tailwind theme) */ | |
| --background: 53 100% 93%; /* #FFFBDC */ | |
| --foreground: 22 100% 5%; /* #1a0a00 */ | |
| --card: 0 0% 100%; /* #FFFFFF */ | |
| --card-foreground: 22 100% 5%; | |
| --popover: 0 0% 100%; | |
| --popover-foreground: 22 100% 5%; | |
| --primary: 21 100% 50%; /* #FF5900 */ | |
| --primary-foreground: 0 0% 100%; | |
| --secondary: 19 100% 60%; /* #FF8237 */ | |
| --secondary-foreground: 0 0% 100%; | |
| --muted: 30 100% 82%; /* #FFD3A5 */ | |
| --muted-foreground: 24 59% 30%; /* #7a4520 */ | |
| --accent: 25 100% 72%; /* #FFAA6E */ | |
| --accent-foreground: 22 100% 5%; | |
| --success: 158 90% 30%; /* ~#059669 */ | |
| --success-foreground: 0 0% 100%; | |
| --danger: 0 73% 50%; /* ~#dc2626 */ | |
| --danger-foreground: 0 0% 100%; | |
| --warning: 32 95% 44%; /* ~#d97706 */ | |
| --warning-foreground: 0 0% 100%; | |
| --destructive: 0 73% 50%; | |
| --destructive-foreground: 0 0% 100%; | |
| --border: 19 100% 75%; | |
| --input: 25 100% 85%; | |
| --ring: 21 100% 50%; | |
| --radius: 0.875rem; | |
| --shadow-glow: 0 0 40px rgba(255, 89, 0, 0.25); | |
| --shadow-card: 0 8px 32px rgba(255, 89, 0, 0.08); | |
| } | |
| /* DARK MODE — Original Indigo/Cyan palette */ | |
| .dark, | |
| :root[data-theme="dark"] { | |
| /* Backgrounds */ | |
| --bg-primary: #0a0a0f; | |
| --bg-secondary: #0d0d14; | |
| --bg-card: #111827; | |
| --bg-card-hover: #1a2235; | |
| /* Brand / Accent */ | |
| --accent-primary: #6366f1; | |
| --accent-secondary: #06b6d4; | |
| --accent-muted: #1e1b4b; | |
| /* Text */ | |
| --text-primary: #f9fafb; | |
| --text-secondary: #9ca3af; | |
| --text-muted: #6b7280; | |
| --text-accent: #6366f1; | |
| /* Borders */ | |
| --border-default: rgba(99, 102, 241, 0.2); | |
| --border-hover: rgba(99, 102, 241, 0.5); | |
| --border-card: rgba(255, 255, 255, 0.08); | |
| /* Semantic */ | |
| --color-safe: #10b981; | |
| --color-safe-bg: rgba(16, 185, 129, 0.1); | |
| --color-unsafe: #ef4444; | |
| --color-unsafe-bg: rgba(239, 68, 68, 0.1); | |
| --color-warning: #f59e0b; | |
| --color-warning-bg: rgba(245, 158, 11, 0.1); | |
| --color-info: #9ca3af; | |
| /* 3D background particles */ | |
| --particle-primary: #6366f1; | |
| --particle-secondary: #06b6d4; | |
| --particle-line: rgba(99, 102, 241, 0.3); | |
| /* Glassmorphism */ | |
| --glass-bg: rgba(10, 10, 15, 0.8); | |
| --glass-border: rgba(255, 255, 255, 0.08); | |
| --glass-blur: blur(12px); | |
| /* Gradients */ | |
| --gradient-primary: linear-gradient(135deg, #6366f1 0%, #06b6d4 100%); | |
| --gradient-hero: linear-gradient(135deg, #6366f1 0%, #0a0a0f 60%); | |
| --gradient-glow: 0 0 40px rgba(99, 102, 241, 0.3); | |
| /* Reward bar */ | |
| --reward-positive: #10b981; | |
| --reward-negative: #ef4444; | |
| --reward-neutral: #9ca3af; | |
| /* Scrollbar */ | |
| --scrollbar-track: #0a0a0f; | |
| --scrollbar-thumb: #6366f1; | |
| --scrollbar-thumb-hover: #4f46e5; | |
| /* Semantic tokens (HSL) */ | |
| --background: 240 22% 5%; /* #0a0a0f */ | |
| --foreground: 220 14% 96%; /* #f9fafb */ | |
| --card: 220 39% 11%; /* #111827 */ | |
| --card-foreground: 220 14% 96%; | |
| --popover: 220 39% 11%; | |
| --popover-foreground: 220 14% 96%; | |
| --primary: 239 84% 67%; /* #6366f1 */ | |
| --primary-foreground: 0 0% 100%; | |
| --secondary: 189 94% 43%; /* #06b6d4 */ | |
| --secondary-foreground: 0 0% 100%; | |
| --muted: 240 17% 6%; /* #0d0d14 */ | |
| --muted-foreground: 220 9% 65%; /* #9ca3af */ | |
| --accent: 244 56% 20%; /* #1e1b4b */ | |
| --accent-foreground: 220 14% 96%; | |
| --success: 158 84% 39%; | |
| --success-foreground: 0 17% 95%; | |
| --danger: 0 84% 60%; | |
| --danger-foreground: 0 17% 95%; | |
| --warning: 38 92% 50%; | |
| --warning-foreground: 0 17% 95%; | |
| --destructive: 0 84% 60%; | |
| --destructive-foreground: 0 17% 95%; | |
| --border: 239 84% 67% / 0.25; | |
| --input: 220 39% 15%; | |
| --ring: 239 84% 67%; | |
| --shadow-glow: 0 0 40px rgba(99, 102, 241, 0.3); | |
| --shadow-card: 0 8px 32px rgba(0, 0, 0, 0.5); | |
| } | |
| * { | |
| @apply border-border; | |
| } | |
| html { | |
| scroll-behavior: smooth; | |
| } | |
| body { | |
| @apply bg-background text-foreground; | |
| font-feature-settings: "cv02", "cv03", "cv04", "cv11"; | |
| transition: background-color 300ms ease, color 300ms ease; | |
| } | |
| /* Scrollbars */ | |
| ::-webkit-scrollbar { width: 6px; height: 6px; } | |
| :root[data-theme="dark"] ::-webkit-scrollbar-track, | |
| .dark ::-webkit-scrollbar-track { background: #0a0a0f; } | |
| :root[data-theme="dark"] ::-webkit-scrollbar-thumb, | |
| .dark ::-webkit-scrollbar-thumb { background: #6366f1; border-radius: 3px; } | |
| :root[data-theme="dark"] ::-webkit-scrollbar-thumb:hover, | |
| .dark ::-webkit-scrollbar-thumb:hover { background: #4f46e5; } | |
| :root[data-theme="light"] ::-webkit-scrollbar-track { background: #FFD3A5; } | |
| :root[data-theme="light"] ::-webkit-scrollbar-thumb { background: #FF8237; border-radius: 3px; } | |
| :root[data-theme="light"] ::-webkit-scrollbar-thumb:hover { background: #FF5900; } | |
| } | |
| @layer components { | |
| .glass { | |
| background: var(--glass-bg); | |
| backdrop-filter: var(--glass-blur); | |
| -webkit-backdrop-filter: var(--glass-blur); | |
| border: 1px solid var(--glass-border); | |
| box-shadow: var(--shadow-card); | |
| } | |
| .gradient-text { | |
| background: var(--gradient-primary); | |
| -webkit-background-clip: text; | |
| background-clip: text; | |
| -webkit-text-fill-color: transparent; | |
| color: transparent; | |
| } | |
| .gradient-bg { | |
| background: var(--gradient-primary); | |
| } | |
| .glow { | |
| box-shadow: var(--shadow-glow); | |
| } | |
| .grid-bg { | |
| background-image: | |
| linear-gradient(hsl(var(--border) / 0.4) 1px, transparent 1px), | |
| linear-gradient(90deg, hsl(var(--border) / 0.4) 1px, transparent 1px); | |
| background-size: 48px 48px; | |
| mask-image: radial-gradient(ellipse 60% 50% at 50% 50%, #000 40%, transparent 100%); | |
| } | |
| .ecg-line { | |
| stroke-dasharray: 8 4; | |
| animation: ecg-march 3s linear infinite; | |
| } | |
| } | |
| @layer utilities { | |
| .animation-delay-200 { animation-delay: 200ms; } | |
| .animation-delay-400 { animation-delay: 400ms; } | |
| .animation-delay-600 { animation-delay: 600ms; } | |
| .text-balance { text-wrap: balance; } | |
| } | |
| @keyframes ecg-march { to { stroke-dashoffset: -120; } } | |
| @keyframes pulse-ring { | |
| 0% { transform: scale(0.6); opacity: 0.8; } | |
| 100% { transform: scale(2.4); opacity: 0; } | |
| } | |
| @keyframes dash-travel { to { stroke-dashoffset: -40; } } | |
| @keyframes float-y { | |
| 0%, 100% { transform: translateY(0); } | |
| 50% { transform: translateY(-8px); } | |
| } | |
| .animate-pulse-ring { animation: pulse-ring 2.4s ease-out infinite; } | |
| .animate-dash { stroke-dasharray: 6 6; animation: dash-travel 1.2s linear infinite; } | |
| .animate-float { animation: float-y 4s ease-in-out infinite; } | |