Spaces:
Running
Running
| @import "tailwindcss"; | |
| /* ββ Design tokens ββββββββββββββββββββββββββββββββββββββββββββββββ | |
| Consolidated palette + surface scale. Use via Tailwind arbitrary | |
| values (bg-[var(--surface-1)]) or via the semantic helpers below. */ | |
| :root { | |
| /* surface / depth scale */ | |
| --bg: #0a0e17; | |
| --surface-0: #0d1220; | |
| --surface-1: #11172a; | |
| --surface-2: #151c33; | |
| --border-subtle: rgba(255, 255, 255, 0.05); | |
| --border-strong: rgba(255, 255, 255, 0.1); | |
| /* text scale */ | |
| --text-primary: #e7ebf3; | |
| --text-muted: #9aa3b5; | |
| --text-faint: #5b6274; | |
| /* single accent (cyan). Orange is reserved for destructive. */ | |
| --accent: #38bdf8; | |
| --accent-soft: rgba(56, 189, 248, 0.18); | |
| --accent-ring: rgba(56, 189, 248, 0.55); | |
| --radius: 6px; | |
| } | |
| @theme inline { | |
| --color-bg: var(--bg); | |
| --color-surface-0: var(--surface-0); | |
| --color-surface-1: var(--surface-1); | |
| --color-surface-2: var(--surface-2); | |
| --color-accent: var(--accent); | |
| --font-sans: var(--font-geist-sans); | |
| --font-mono: var(--font-geist-mono); | |
| } | |
| html { | |
| font-size: 18px; | |
| } | |
| body { | |
| background: var(--bg); | |
| color: var(--text-primary); | |
| font-feature-settings: | |
| "cv11" 1, | |
| "ss01" 1; | |
| -webkit-font-smoothing: antialiased; | |
| text-rendering: optimizeLegibility; | |
| } | |
| /* Numeric readouts always use tabular figures so rows don't jitter. */ | |
| .tabular, | |
| [data-tabular] { | |
| font-variant-numeric: tabular-nums; | |
| } | |
| /* ββ Semantic helpers ββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .panel { | |
| @apply rounded-md border border-white/5 bg-white/[0.02]; | |
| } | |
| .panel-raised { | |
| @apply rounded-md border border-white/10 bg-white/[0.03]; | |
| } | |
| /* Scrollbar: thin, subtle, matches the surface palette. */ | |
| *::-webkit-scrollbar { | |
| width: 10px; | |
| height: 10px; | |
| } | |
| *::-webkit-scrollbar-track { | |
| background: transparent; | |
| } | |
| *::-webkit-scrollbar-thumb { | |
| background: rgba(255, 255, 255, 0.06); | |
| border-radius: 10px; | |
| border: 2px solid transparent; | |
| background-clip: padding-box; | |
| } | |
| *::-webkit-scrollbar-thumb:hover { | |
| background-color: rgba(255, 255, 255, 0.12); | |
| background-clip: padding-box; | |
| } | |
| /* ββ Background video (used on the landing page) βββββββββββββββββββ */ | |
| .video-background { | |
| @apply fixed top-0 right-0 bottom-0 left-0 -z-10 overflow-hidden w-screen h-screen; | |
| } | |
| .video-background video { | |
| @apply absolute top-1/2 left-1/2 pointer-events-none bg-black; | |
| min-width: 100vw; | |
| min-height: 100vh; | |
| width: auto; | |
| height: auto; | |
| transform: translate(-50%, -50%); | |
| object-fit: cover; | |
| filter: brightness(0.55) saturate(0.85); | |
| } | |
| @keyframes fadeInUp { | |
| from { | |
| opacity: 0; | |
| transform: translateY(16px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| } | |
| .animate-fade-in-up { | |
| animation: fadeInUp 0.55s ease-out forwards; | |
| } | |
| /* Late entry β used for elements that should arrive after the hero stack | |
| has settled, so they read as a quiet afterthought rather than another | |
| simultaneous CTA. `both` fill mode keeps the element invisible during | |
| the delay so it doesn't briefly flash with the parent's animation. */ | |
| @keyframes fadeIn { | |
| from { | |
| opacity: 0; | |
| transform: translateY(6px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| } | |
| .animate-fade-in-late { | |
| animation: fadeIn 0.45s ease-out 0.55s both; | |
| } | |
| /* Pop animation for dropdowns β anchors at top-right and scales up | |
| slightly while fading in. Short enough (140ms) to feel snappy. */ | |
| @keyframes menuPop { | |
| from { | |
| opacity: 0; | |
| transform: translateY(-2px) scale(0.97); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateY(0) scale(1); | |
| } | |
| } | |
| .animate-menu-pop { | |
| animation: menuPop 0.14s ease-out forwards; | |
| transform-origin: top right; | |
| } | |