Spaces:
Sleeping
Sleeping
| @import 'tailwindcss'; | |
| @plugin '@tailwindcss/forms'; | |
| @plugin '@tailwindcss/typography'; | |
| button, | |
| [type='button'], | |
| [type='submit'], | |
| [type='reset'], | |
| a, | |
| [role='button'], | |
| summary { | |
| cursor: pointer; | |
| } | |
| button:disabled, | |
| [type='button']:disabled, | |
| [type='submit']:disabled, | |
| [type='reset']:disabled, | |
| [role='button'][aria-disabled='true'], | |
| a[aria-disabled='true'] { | |
| cursor: not-allowed; | |
| } | |
| /* ============================================ | |
| DESIGN SYSTEM TOKENS | |
| ============================================ */ | |
| /* Performance-optimized blur and effects */ | |
| :root[data-performance='medium'] { | |
| --perf-blur-high: 22px; | |
| --perf-blur-medium: 18px; | |
| --perf-blur-low: 14px; | |
| --perf-saturate: 125%; | |
| } | |
| :root[data-performance='low'] { | |
| --perf-blur-high: 0px; | |
| --perf-blur-medium: 0px; | |
| --perf-blur-low: 0px; | |
| --perf-saturate: 100%; | |
| } | |
| :root[data-performance='low'] * { | |
| backdrop-filter: none ; | |
| -webkit-backdrop-filter: none ; | |
| } | |
| :root[data-performance='low'] .glass-panel, | |
| :root[data-performance='low'] .glass-toolbar, | |
| :root[data-performance='low'] .settings-menu, | |
| :root[data-performance='low'] .toolbar-button, | |
| :root[data-performance='low'] .glass-option, | |
| :root[data-performance='low'] .glass-action, | |
| :root[data-performance='low'] .glass-option__chip, | |
| :root[data-performance='low'] .glass-panel__footer, | |
| :root[data-performance='low'] .navigation-overlay, | |
| :root[data-performance='low'] .navigation-overlay__progress { | |
| background-color: rgba(15, 23, 42, 0.92) ; | |
| border-color: rgba(148, 163, 184, 0.2) ; | |
| box-shadow: none ; | |
| } | |
| :root[data-performance='low'] .toolbar-button, | |
| :root[data-performance='low'] .glass-option, | |
| :root[data-performance='low'] .glass-action { | |
| transition: none; | |
| } | |
| :root:not([data-performance='medium']):not([data-performance='low']) { | |
| --perf-blur-high: 32px; | |
| --perf-blur-medium: 28px; | |
| --perf-blur-low: 24px; | |
| --perf-saturate: 160%; | |
| } | |
| /* Enhanced Color Palette */ | |
| :root { | |
| /* Primary Blues */ | |
| --color-primary-50: #eff6ff; | |
| --color-primary-100: #dbeafe; | |
| --color-primary-200: #bfdbfe; | |
| --color-primary-300: #93c5fd; | |
| --color-primary-400: #60a5fa; | |
| --color-primary-500: #3b82f6; | |
| --color-primary-600: #2563eb; | |
| --color-primary-700: #1d4ed8; | |
| --color-primary-800: #1e40af; | |
| --color-primary-900: #1e3a8a; | |
| /* Accent Purples */ | |
| --color-accent-400: #a78bfa; | |
| --color-accent-500: #8b5cf6; | |
| --color-accent-600: #7c3aed; | |
| /* Neutrals (Slate) */ | |
| --color-neutral-50: #f8fafc; | |
| --color-neutral-100: #f1f5f9; | |
| --color-neutral-200: #e2e8f0; | |
| --color-neutral-300: #cbd5e1; | |
| --color-neutral-400: #94a3b8; | |
| --color-neutral-500: #64748b; | |
| --color-neutral-600: #475569; | |
| --color-neutral-700: #334155; | |
| --color-neutral-800: #1e293b; | |
| --color-neutral-900: #0f172a; | |
| --color-neutral-950: #020617; | |
| /* Semantic Colors */ | |
| --color-success-500: #22c55e; | |
| --color-warning-500: #f59e0b; | |
| --color-error-500: #ef4444; | |
| /* Spacing Scale */ | |
| --space-1: 0.25rem; | |
| --space-2: 0.5rem; | |
| --space-3: 0.75rem; | |
| --space-4: 1rem; | |
| --space-5: 1.25rem; | |
| --space-6: 1.5rem; | |
| --space-8: 2rem; | |
| --space-10: 2.5rem; | |
| --space-12: 3rem; | |
| --space-16: 4rem; | |
| /* Border Radius */ | |
| --radius-sm: 0.375rem; | |
| --radius-md: 0.5rem; | |
| --radius-lg: 0.75rem; | |
| --radius-xl: 1rem; | |
| --radius-2xl: 1.25rem; | |
| --radius-full: 9999px; | |
| /* Shadows */ | |
| --shadow-glow-sm: 0 0 10px rgba(59, 130, 246, 0.15); | |
| --shadow-glow-md: 0 0 20px rgba(59, 130, 246, 0.2); | |
| --shadow-glow-lg: 0 0 40px rgba(59, 130, 246, 0.25); | |
| /* Transitions */ | |
| --transition-fast: 150ms cubic-bezier(0.4, 0, 0.2, 1); | |
| --transition-base: 200ms cubic-bezier(0.4, 0, 0.2, 1); | |
| --transition-slow: 300ms cubic-bezier(0.4, 0, 0.2, 1); | |
| --transition-spring: 500ms cubic-bezier(0.34, 1.56, 0.64, 1); | |
| } | |
| /* Gradient Definitions */ | |
| .gradient-primary { | |
| background: linear-gradient(135deg, var(--color-primary-500) 0%, var(--color-accent-500) 100%); | |
| } | |
| .gradient-text-primary { | |
| background: linear-gradient(135deg, var(--color-primary-400) 0%, var(--color-accent-400) 100%); | |
| -webkit-background-clip: text; | |
| background-clip: text; | |
| color: transparent; | |
| } | |
| .gradient-text-hero { | |
| background: linear-gradient(135deg, #667eea 0%, #764ba2 50%, #f093fb 100%); | |
| background-size: 200% 200%; | |
| -webkit-background-clip: text; | |
| background-clip: text; | |
| color: transparent; | |
| animation: gradient-shift 8s ease infinite; | |
| } | |
| @keyframes gradient-shift { | |
| 0%, 100% { background-position: 0% 50%; } | |
| 50% { background-position: 100% 50%; } | |
| } | |
| /* Glass Effect Utilities */ | |
| .glass-subtle { | |
| background: rgba(15, 23, 42, 0.4); | |
| backdrop-filter: blur(var(--perf-blur-low, 24px)) saturate(var(--perf-saturate, 160%)); | |
| -webkit-backdrop-filter: blur(var(--perf-blur-low, 24px)) saturate(var(--perf-saturate, 160%)); | |
| border: 1px solid rgba(148, 163, 184, 0.12); | |
| } | |
| .glass-medium { | |
| background: rgba(15, 23, 42, 0.55); | |
| backdrop-filter: blur(var(--perf-blur-medium, 28px)) saturate(var(--perf-saturate, 160%)); | |
| -webkit-backdrop-filter: blur(var(--perf-blur-medium, 28px)) saturate(var(--perf-saturate, 160%)); | |
| border: 1px solid rgba(148, 163, 184, 0.15); | |
| } | |
| .glass-strong { | |
| background: rgba(15, 23, 42, 0.7); | |
| backdrop-filter: blur(var(--perf-blur-high, 32px)) saturate(var(--perf-saturate, 160%)); | |
| -webkit-backdrop-filter: blur(var(--perf-blur-high, 32px)) saturate(var(--perf-saturate, 160%)); | |
| border: 1px solid rgba(148, 163, 184, 0.18); | |
| } | |
| /* Hover Lift Effect */ | |
| .hover-lift { | |
| transition: transform var(--transition-base), box-shadow var(--transition-base); | |
| } | |
| .hover-lift:hover { | |
| transform: translateY(-2px); | |
| box-shadow: 0 12px 40px rgba(0, 0, 0, 0.15); | |
| } | |
| /* Glow on Focus/Hover */ | |
| .glow-on-hover { | |
| transition: box-shadow var(--transition-base); | |
| } | |
| .glow-on-hover:hover { | |
| box-shadow: var(--shadow-glow-md); | |
| } | |
| /* Card Styles */ | |
| .card-interactive { | |
| transition: | |
| transform var(--transition-base), | |
| box-shadow var(--transition-base), | |
| border-color var(--transition-slow); | |
| } | |
| .card-interactive:hover { | |
| transform: translateY(-2px) scale(1.01); | |
| box-shadow: | |
| 0 20px 50px rgba(2, 6, 23, 0.4), | |
| var(--shadow-glow-sm); | |
| border-color: rgba(148, 163, 184, 0.25); | |
| } | |
| /* ============================================ | |
| MOBILE PERFORMANCE OPTIMIZATIONS | |
| ============================================ */ | |
| /* Mobile-specific blur reduction (major GPU savings) */ | |
| @media (max-width: 768px) { | |
| :root:not([data-performance='low']) { | |
| --perf-blur-high: 16px; | |
| --perf-blur-medium: 12px; | |
| --perf-blur-low: 8px; | |
| --perf-saturate: 130%; | |
| } | |
| :root[data-performance='medium'] { | |
| --perf-blur-high: 12px; | |
| --perf-blur-medium: 8px; | |
| --perf-blur-low: 6px; | |
| --perf-saturate: 120%; | |
| } | |
| } | |
| /* Touch device optimizations */ | |
| @media (pointer: coarse) { | |
| /* Disable hover effects that cause sticky states on touch */ | |
| .hover-lift:hover { | |
| transform: none; | |
| } | |
| /* Active state for touch feedback */ | |
| .hover-lift:active { | |
| transform: scale(0.98); | |
| } | |
| .card-interactive:hover { | |
| transform: none; | |
| box-shadow: none; | |
| } | |
| .card-interactive:active { | |
| transform: scale(0.99); | |
| background: rgba(148, 163, 184, 0.08); | |
| } | |
| } | |
| /* GPU acceleration for animated elements */ | |
| .gpu-accelerated { | |
| transform: translateZ(0); | |
| will-change: transform; | |
| backface-visibility: hidden; | |
| } | |
| /* CSS Containment for performance */ | |
| .contain-layout { | |
| contain: layout; | |
| } | |
| .contain-paint { | |
| contain: paint; | |
| } | |
| .contain-strict { | |
| contain: strict; | |
| } | |
| .contain-content { | |
| contain: content; | |
| } | |
| /* Off-screen content optimization */ | |
| .content-visibility-auto { | |
| content-visibility: auto; | |
| contain-intrinsic-size: auto 300px; | |
| } | |
| /* ============================================ | |
| TOUCH-FRIENDLY DEFAULTS | |
| ============================================ */ | |
| /* Minimum touch target size (44px as per Apple/Google guidelines) */ | |
| .touch-target { | |
| min-height: 44px; | |
| min-width: 44px; | |
| } | |
| .touch-target-lg { | |
| min-height: 48px; | |
| min-width: 48px; | |
| } | |
| /* Remove tap highlight on mobile */ | |
| * { | |
| -webkit-tap-highlight-color: transparent; | |
| } | |
| /* Safe area padding for notched devices */ | |
| .safe-area-top { | |
| padding-top: env(safe-area-inset-top, 0); | |
| } | |
| .safe-area-bottom { | |
| padding-bottom: env(safe-area-inset-bottom, 0); | |
| } | |
| .safe-area-left { | |
| padding-left: env(safe-area-inset-left, 0); | |
| } | |
| .safe-area-right { | |
| padding-right: env(safe-area-inset-right, 0); | |
| } | |
| .safe-area-x { | |
| padding-left: env(safe-area-inset-left, 0); | |
| padding-right: env(safe-area-inset-right, 0); | |
| } | |
| .safe-area-y { | |
| padding-top: env(safe-area-inset-top, 0); | |
| padding-bottom: env(safe-area-inset-bottom, 0); | |
| } | |
| /* ============================================ | |
| REDUCED MOTION PREFERENCES | |
| ============================================ */ | |
| @media (prefers-reduced-motion: reduce) { | |
| *, | |
| *::before, | |
| *::after { | |
| animation-duration: 0.01ms ; | |
| animation-iteration-count: 1 ; | |
| transition-duration: 0.01ms ; | |
| } | |
| .gradient-text-hero { | |
| animation: none; | |
| background-size: 100% 100%; | |
| } | |
| } | |
| /* ============================================ | |
| EFFICIENT MOBILE ANIMATIONS | |
| ============================================ */ | |
| /* Simple fade for mobile (no transforms = cheaper) */ | |
| @keyframes fade-in { | |
| from { opacity: 0; } | |
| to { opacity: 1; } | |
| } | |
| @keyframes fade-out { | |
| from { opacity: 1; } | |
| to { opacity: 0; } | |
| } | |
| /* Slide animations using transform (GPU-accelerated) */ | |
| @keyframes slide-up { | |
| from { | |
| opacity: 0; | |
| transform: translateY(10px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| } | |
| @keyframes slide-down { | |
| from { | |
| opacity: 0; | |
| transform: translateY(-10px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| } | |
| /* Pulse for loading states */ | |
| @keyframes pulse-subtle { | |
| 0%, 100% { opacity: 1; } | |
| 50% { opacity: 0.6; } | |
| } | |
| .animate-pulse-subtle { | |
| animation: pulse-subtle 2s ease-in-out infinite; | |
| } | |
| /* ============================================ | |
| SCROLLBAR STYLING | |
| ============================================ */ | |
| /* Custom scrollbar for webkit browsers */ | |
| ::-webkit-scrollbar { | |
| width: 8px; | |
| height: 8px; | |
| } | |
| ::-webkit-scrollbar-track { | |
| background: rgba(15, 23, 42, 0.3); | |
| border-radius: 4px; | |
| } | |
| ::-webkit-scrollbar-thumb { | |
| background: rgba(148, 163, 184, 0.3); | |
| border-radius: 4px; | |
| } | |
| ::-webkit-scrollbar-thumb:hover { | |
| background: rgba(148, 163, 184, 0.5); | |
| } | |
| /* Firefox scrollbar */ | |
| * { | |
| scrollbar-width: thin; | |
| scrollbar-color: rgba(148, 163, 184, 0.3) rgba(15, 23, 42, 0.3); | |
| } | |
| /* figtree-regular - latin_latin-ext */ | |
| @font-face { | |
| font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ | |
| font-family: 'Figtree'; | |
| font-style: normal; | |
| font-weight: 400; | |
| src: url('/fonts/figtree-v9-latin_latin-ext-regular.woff2') format('woff2'), /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ | |
| url('/fonts/figtree-v9-latin_latin-ext-regular.ttf') format('truetype'); /* Chrome 4+, Firefox 3.5+, IE 9+, Safari 3.1+, iOS 4.2+, Android Browser 2.2+ */ | |
| } | |
| /* figtree-italic - latin_latin-ext */ | |
| @font-face { | |
| font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ | |
| font-family: 'Figtree'; | |
| font-style: italic; | |
| font-weight: 400; | |
| src: url('/fonts/figtree-v9-latin_latin-ext-italic.woff2') format('woff2'), /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ | |
| url('/fonts/figtree-v9-latin_latin-ext-italic.ttf') format('truetype'); /* Chrome 4+, Firefox 3.5+, IE 9+, Safari 3.1+, iOS 4.2+, Android Browser 2.2+ */ | |
| } | |
| /* figtree-700 - latin_latin-ext */ | |
| @font-face { | |
| font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ | |
| font-family: 'Figtree'; | |
| font-style: normal; | |
| font-weight: 700; | |
| src: url('/fonts/figtree-v9-latin_latin-ext-700.woff2') format('woff2'), /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ | |
| url('/fonts/figtree-v9-latin_latin-ext-700.ttf') format('truetype'); /* Chrome 4+, Firefox 3.5+, IE 9+, Safari 3.1+, iOS 4.2+, Android Browser 2.2+ */ | |
| } | |
| /* figtree-700italic - latin_latin-ext */ | |
| @font-face { | |
| font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ | |
| font-family: 'Figtree'; | |
| font-style: italic; | |
| font-weight: 700; | |
| src: url('/fonts/figtree-v9-latin_latin-ext-700italic.woff2') format('woff2'), /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ | |
| url('/fonts/figtree-v9-latin_latin-ext-700italic.ttf') format('truetype'); /* Chrome 4+, Firefox 3.5+, IE 9+, Safari 3.1+, iOS 4.2+, Android Browser 2.2+ */ | |
| } |