Spaces:
Sleeping
Sleeping
| @tailwind base; | |
| @tailwind components; | |
| @tailwind utilities; | |
| /* Definition of the design system. All colors, gradients, fonts, etc should be defined here. | |
| All colors MUST be HSL. | |
| */ | |
| @layer base { | |
| :root { | |
| /* Coder's Club Color System */ | |
| --background: 43 55% 96%; /* #FAF7EE - light ivory */ | |
| --foreground: 75 15% 19%; /* #31372B - dark gray-green */ | |
| --card: 0 0% 100%; | |
| --card-foreground: 75 15% 19%; | |
| --popover: 0 0% 100%; | |
| --popover-foreground: 75 15% 19%; | |
| --primary: 335 51% 38%; /* #912F56 - rich burgundy rose */ | |
| --primary-foreground: 43 55% 96%; | |
| --secondary: 146 50% 36%; /* #2E8B57 - deep sage green */ | |
| --secondary-foreground: 43 55% 96%; | |
| --muted: 43 30% 90%; | |
| --muted-foreground: 75 15% 45%; | |
| --accent: 335 51% 38%; | |
| --accent-foreground: 43 55% 96%; | |
| --destructive: 0 84.2% 60.2%; | |
| --destructive-foreground: 43 55% 96%; | |
| --border: 150 20% 85%; | |
| --input: 150 20% 90%; | |
| --ring: 335 51% 38%; | |
| --radius: 1rem; | |
| /* Custom Design System Tokens */ | |
| --gradient-primary: linear-gradient(135deg, hsl(335 51% 38%), hsl(335 51% 48%)); | |
| --gradient-secondary: linear-gradient(135deg, hsl(146 50% 36%), hsl(146 50% 46%)); | |
| --gradient-hero: linear-gradient(135deg, hsl(335 51% 38% / 0.1), hsl(146 50% 36% / 0.1)); | |
| --shadow-soft: 0 4px 24px hsl(335 51% 38% / 0.08); | |
| --shadow-glow: 0 0 40px hsl(335 51% 38% / 0.2); | |
| --transition-smooth: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); | |
| --sidebar-background: 0 0% 98%; | |
| --sidebar-foreground: 240 5.3% 26.1%; | |
| --sidebar-primary: 240 5.9% 10%; | |
| --sidebar-primary-foreground: 0 0% 98%; | |
| --sidebar-accent: 240 4.8% 95.9%; | |
| --sidebar-accent-foreground: 240 5.9% 10%; | |
| --sidebar-border: 220 13% 91%; | |
| --sidebar-ring: 217.2 91.2% 59.8%; | |
| } | |
| .dark { | |
| --background: 75 15% 12%; | |
| --foreground: 43 55% 96%; | |
| --card: 75 15% 15%; | |
| --card-foreground: 43 55% 96%; | |
| --popover: 75 15% 12%; | |
| --popover-foreground: 43 55% 96%; | |
| --primary: 335 51% 48%; | |
| --primary-foreground: 43 55% 96%; | |
| --secondary: 146 50% 46%; | |
| --secondary-foreground: 43 55% 96%; | |
| --muted: 75 15% 20%; | |
| --muted-foreground: 43 30% 70%; | |
| --accent: 335 51% 48%; | |
| --accent-foreground: 43 55% 96%; | |
| --destructive: 0 62.8% 50.6%; | |
| --destructive-foreground: 43 55% 96%; | |
| --border: 75 15% 25%; | |
| --input: 75 15% 25%; | |
| --ring: 335 51% 48%; | |
| --sidebar-background: 75 15% 10%; | |
| --sidebar-foreground: 43 55% 96%; | |
| --sidebar-primary: 335 51% 48%; | |
| --sidebar-primary-foreground: 43 55% 96%; | |
| --sidebar-accent: 75 15% 18%; | |
| --sidebar-accent-foreground: 43 55% 96%; | |
| --sidebar-border: 75 15% 25%; | |
| --sidebar-ring: 335 51% 48%; | |
| } | |
| } | |
| @layer base { | |
| * { | |
| @apply border-border; | |
| } | |
| html { | |
| scroll-behavior: smooth; | |
| scroll-padding-top: 60px; | |
| } | |
| @media (min-width: 640px) { | |
| html { | |
| scroll-padding-top: 80px; | |
| } | |
| } | |
| body { | |
| @apply bg-background text-foreground font-['Poppins',sans-serif] antialiased; | |
| /* Ensure text is visible on dot background */ | |
| color: white ; | |
| overflow-x: hidden; | |
| min-height: 100vh; | |
| font-size: 16px; | |
| line-height: 1.6; | |
| } | |
| /* Enhanced smooth scrolling for webkit browsers */ | |
| @supports (scroll-behavior: smooth) { | |
| html { | |
| scroll-behavior: smooth; | |
| } | |
| } | |
| h1, h2, h3, h4, h5, h6 { | |
| @apply font-['Space_Grotesk',sans-serif]; | |
| /* Enhanced headings visibility with better contrast */ | |
| color: white ; | |
| text-shadow: | |
| 0 1px 2px rgba(0, 0, 0, 0.8), | |
| 0 2px 4px rgba(0, 0, 0, 0.6), | |
| 0 4px 8px rgba(0, 0, 0, 0.3); | |
| font-weight: 600; | |
| } | |
| /* Ensure all text elements are visible with better contrast */ | |
| p, span, div, a, li, td, th, label { | |
| color: rgba(255, 255, 255, 0.95) ; | |
| text-shadow: | |
| 0 1px 2px rgba(0, 0, 0, 0.8), | |
| 0 2px 4px rgba(0, 0, 0, 0.4); | |
| } | |
| /* Button styles */ | |
| button { | |
| text-shadow: none ; | |
| font-weight: 500; | |
| display: inline-flex; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 0.5rem; | |
| transition: all 0.2s ease-in-out; | |
| } | |
| /* Ensure consistent icon sizing and alignment */ | |
| button svg { | |
| width: 1.25rem; | |
| height: 1.25rem; | |
| flex-shrink: 0; | |
| } | |
| /* Specific button size adjustments */ | |
| .btn-with-icon { | |
| padding-right: 1.25rem ; | |
| padding-left: 1.25rem ; | |
| } | |
| /* Enhanced visibility for links and interactive elements */ | |
| a { | |
| color: rgba(255, 255, 255, 0.9) ; | |
| transition: color 0.3s ease; | |
| } | |
| a:hover { | |
| color: white ; | |
| text-shadow: | |
| 0 1px 2px rgba(0, 0, 0, 0.9), | |
| 0 2px 6px rgba(0, 0, 0, 0.5); | |
| } | |
| } | |
| @layer utilities { | |
| .animate-fade-up { | |
| animation: fade-up 0.8s ease-out forwards; | |
| } | |
| .animate-scale-in { | |
| animation: scale-in 0.6s ease-out forwards; | |
| } | |
| .glass-card { | |
| @apply backdrop-blur-lg; | |
| border: 1px solid rgba(192, 132, 252, 0.3) ; /* Light purple border */ | |
| transition: all 0.3s cubic-bezier(0.22, 1, 0.36, 1); | |
| background: transparent ; | |
| box-shadow: none ; | |
| } | |
| .glass-card:hover { | |
| border-color: rgba(192, 132, 252, 0.6) ; /* Slightly more visible on hover */ | |
| @apply backdrop-blur-xl; | |
| background: transparent ; | |
| box-shadow: none ; | |
| } | |
| .hover-lift { | |
| @apply transition-all duration-300; | |
| transition: all 0.3s cubic-bezier(0.22, 1, 0.36, 1); | |
| } | |
| .hover-lift:hover { | |
| transform: translateY(-8px) scale(1.02); | |
| box-shadow: 0 20px 40px rgba(0, 0, 0, 0.2); | |
| } | |
| /* Section transitions */ | |
| .section-transition { | |
| transition: all 0.6s cubic-bezier(0.22, 1, 0.36, 1); | |
| } | |
| /* Enhanced parallax containers */ | |
| .parallax-container { | |
| will-change: transform; | |
| transform-style: preserve-3d; | |
| } | |
| /* Performance optimizations */ | |
| .will-change-transform { | |
| will-change: transform; | |
| } | |
| .will-change-opacity { | |
| will-change: opacity; | |
| } | |
| .transform-gpu { | |
| transform: translateZ(0); | |
| } | |
| /* Intersection observer optimization */ | |
| .animate-on-scroll { | |
| opacity: 0; | |
| transform: translateY(60px); | |
| transition: all 0.6s cubic-bezier(0.22, 1, 0.36, 1); | |
| } | |
| .animate-on-scroll.visible { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| /* Responsive animation controls */ | |
| @media (prefers-reduced-motion: reduce) { | |
| *, | |
| *::before, | |
| *::after { | |
| animation-duration: 0.01ms ; | |
| animation-iteration-count: 1 ; | |
| transition-duration: 0.01ms ; | |
| scroll-behavior: auto ; | |
| } | |
| .animate-fade-up, | |
| .animate-scale-in { | |
| animation: none ; | |
| opacity: 1 ; | |
| transform: none ; | |
| } | |
| .hover-lift:hover { | |
| transform: none ; | |
| } | |
| .glass-card:hover { | |
| transform: none ; | |
| } | |
| } | |
| /* Mobile optimizations */ | |
| @media (max-width: 768px) { | |
| .hover-lift:hover { | |
| transform: translateY(-4px) scale(1.01); | |
| } | |
| .glass-card:hover { | |
| transform: none; | |
| } | |
| /* Reduce animation complexity on mobile */ | |
| [data-animate] { | |
| animation-duration: 0.3s ; | |
| } | |
| /* Optimize parallax for mobile */ | |
| .parallax-container { | |
| will-change: auto; | |
| transform: none ; | |
| } | |
| /* Enhanced text visibility on mobile */ | |
| h1, h2, h3, h4, h5, h6 { | |
| font-size: clamp(1.25rem, 4vw, 2.5rem); | |
| line-height: 1.3; | |
| text-shadow: | |
| 0 2px 4px rgba(0, 0, 0, 0.9), | |
| 0 4px 8px rgba(0, 0, 0, 0.6); | |
| } | |
| p, span, div, a, li, td, th, label { | |
| font-size: clamp(0.875rem, 3vw, 1rem); | |
| line-height: 1.6; | |
| } | |
| /* Mobile-specific glass effects */ | |
| .glass-card { | |
| @apply backdrop-blur-md border border-white/15; | |
| box-shadow: | |
| 0 4px 16px rgba(0, 0, 0, 0.1), | |
| inset 0 1px 0 rgba(255, 255, 255, 0.05); | |
| } | |
| /* Improve touch targets */ | |
| button, a, [role="button"], .touch-target { | |
| min-height: 44px; | |
| min-width: 44px; | |
| padding: 0.75rem 1rem; | |
| cursor: pointer; | |
| } | |
| /* Enhanced mobile spacing */ | |
| .container { | |
| padding-left: 1rem; | |
| padding-right: 1rem; | |
| } | |
| } | |
| /* Tablet optimizations */ | |
| @media (min-width: 769px) and (max-width: 1024px) { | |
| h1, h2, h3, h4, h5, h6 { | |
| font-size: clamp(1.75rem, 4vw, 2.5rem); | |
| } | |
| .glass-card { | |
| @apply backdrop-blur-lg border border-white/10; | |
| } | |
| } | |
| /* Desktop enhancements */ | |
| @media (min-width: 1025px) { | |
| .glass-card { | |
| @apply backdrop-blur-xl border border-white/10; | |
| } | |
| /* Enhanced hover effects for desktop */ | |
| .hover-lift:hover { | |
| transform: translateY(-12px) scale(1.03); | |
| box-shadow: | |
| 0 25px 50px rgba(0, 0, 0, 0.25), | |
| 0 0 0 1px rgba(255, 255, 255, 0.1); | |
| } | |
| } | |
| /* Dot background specific styles */ | |
| .dot-background-text { | |
| @apply text-white drop-shadow-lg; | |
| text-shadow: 0 1px 3px rgba(0, 0, 0, 0.8), 0 2px 6px rgba(0, 0, 0, 0.3); | |
| } | |
| .dot-background-heading { | |
| @apply text-white drop-shadow-xl; | |
| text-shadow: 0 2px 4px rgba(0, 0, 0, 0.9), 0 4px 8px rgba(0, 0, 0, 0.4); | |
| } | |
| .glass-section { | |
| @apply backdrop-blur-sm border-white/5; | |
| backdrop-filter: blur(8px); | |
| } | |
| .glass-section-alt { | |
| @apply backdrop-blur-sm border-white/5; | |
| backdrop-filter: blur(8px); | |
| } | |
| .glass-navbar { | |
| @apply backdrop-blur-md border-white/10; | |
| backdrop-filter: blur(12px); | |
| } | |
| /* Enhanced responsive typography */ | |
| .responsive-text-xs { font-size: clamp(0.75rem, 2.5vw, 0.875rem); } | |
| .responsive-text-sm { font-size: clamp(0.875rem, 3vw, 1rem); } | |
| .responsive-text-base { font-size: clamp(1rem, 3.5vw, 1.125rem); } | |
| .responsive-text-lg { font-size: clamp(1.125rem, 4vw, 1.25rem); } | |
| .responsive-text-xl { font-size: clamp(1.25rem, 4.5vw, 1.5rem); } | |
| .responsive-text-2xl { font-size: clamp(1.5rem, 5vw, 2rem); } | |
| .responsive-text-3xl { font-size: clamp(1.875rem, 6vw, 2.5rem); } | |
| .responsive-text-4xl { font-size: clamp(2.25rem, 7vw, 3rem); } | |
| .responsive-text-5xl { font-size: clamp(3rem, 8vw, 4rem); } | |
| /* Responsive spacing utilities */ | |
| .responsive-px { padding-left: clamp(1rem, 4vw, 2rem); padding-right: clamp(1rem, 4vw, 2rem); } | |
| .responsive-py { padding-top: clamp(2rem, 6vw, 4rem); padding-bottom: clamp(2rem, 6vw, 4rem); } | |
| .responsive-mx { margin-left: clamp(1rem, 4vw, 2rem); margin-right: clamp(1rem, 4vw, 2rem); } | |
| .responsive-my { margin-top: clamp(2rem, 6vw, 4rem); margin-bottom: clamp(2rem, 6vw, 4rem); } | |
| /* Improved container queries */ | |
| .container { | |
| width: 100%; | |
| margin-left: auto; | |
| margin-right: auto; | |
| padding-left: clamp(1rem, 4vw, 2rem); | |
| padding-right: clamp(1rem, 4vw, 2rem); | |
| } | |
| /* Enhanced accessibility for low contrast situations */ | |
| @media (prefers-contrast: high) { | |
| h1, h2, h3, h4, h5, h6 { | |
| text-shadow: | |
| 0 0 0 rgba(0, 0, 0, 1), | |
| 0 2px 4px rgba(0, 0, 0, 1), | |
| 0 4px 8px rgba(0, 0, 0, 0.8); | |
| font-weight: 700; | |
| } | |
| p, span, div, a, li, td, th, label { | |
| text-shadow: | |
| 0 0 0 rgba(0, 0, 0, 1), | |
| 0 1px 2px rgba(0, 0, 0, 1); | |
| font-weight: 500; | |
| } | |
| .glass-card { | |
| @apply backdrop-blur-xl border-2 border-white/30; | |
| } | |
| } | |
| } | |
| @keyframes fade-up { | |
| from { | |
| opacity: 0; | |
| transform: translateY(30px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| } | |
| @keyframes scale-in { | |
| from { | |
| opacity: 0; | |
| transform: scale(0.9); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: scale(1); | |
| } | |
| } | |
| @keyframes slideInUp { | |
| from { | |
| opacity: 0; | |
| transform: translateY(100px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| } | |
| @keyframes fadeInLeft { | |
| from { | |
| opacity: 0; | |
| transform: translateX(-60px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateX(0); | |
| } | |
| } | |
| @keyframes fadeInRight { | |
| from { | |
| opacity: 0; | |
| transform: translateX(60px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateX(0); | |
| } | |
| } | |
| @keyframes pulse-glow { | |
| 0%, 100% { | |
| opacity: 0.3; | |
| transform: scale(1); | |
| } | |
| 50% { | |
| opacity: 0.6; | |
| transform: scale(1.1); | |
| } | |
| } | |
| /* Enhanced loading states */ | |
| @keyframes shimmer { | |
| 0% { | |
| background-position: -200px 0; | |
| } | |
| 100% { | |
| background-position: calc(200px + 100%) 0; | |
| } | |
| } | |
| .shimmer { | |
| background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.1), transparent); | |
| background-size: 200px 100%; | |
| animation: shimmer 1.5s infinite; | |
| } | |
| /* Enhanced line clamp utilities */ | |
| .line-clamp-1 { | |
| overflow: hidden; | |
| display: -webkit-box; | |
| -webkit-box-orient: vertical; | |
| -webkit-line-clamp: 1; | |
| } | |
| .line-clamp-2 { | |
| overflow: hidden; | |
| display: -webkit-box; | |
| -webkit-box-orient: vertical; | |
| -webkit-line-clamp: 2; | |
| } | |
| .line-clamp-3 { | |
| overflow: hidden; | |
| display: -webkit-box; | |
| -webkit-box-orient: vertical; | |
| -webkit-line-clamp: 3; | |
| } | |
| /* Scroll snap utilities for better mobile experience */ | |
| .scroll-snap-x { | |
| scroll-snap-type: x mandatory; | |
| } | |
| .scroll-snap-y { | |
| scroll-snap-type: y mandatory; | |
| } | |
| .snap-start { | |
| scroll-snap-align: start; | |
| } | |
| .snap-center { | |
| scroll-snap-align: center; | |
| } | |
| .snap-end { | |
| scroll-snap-align: end; | |
| } | |
| /* Enhanced focus states for accessibility */ | |
| .focus-ring { | |
| @apply focus:outline-none focus:ring-2 focus:ring-primary focus:ring-offset-2 focus:ring-offset-background; | |
| } | |
| /* Better touch targets for mobile */ | |
| .touch-target { | |
| min-height: 44px; | |
| min-width: 44px; | |
| } | |
| /* Loading states */ | |
| .loading-skeleton { | |
| background: linear-gradient(90deg, rgba(255, 255, 255, 0.1) 25%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.1) 75%); | |
| background-size: 200% 100%; | |
| animation: shimmer 1.5s infinite; | |
| } | |
| /* Enhanced interaction states */ | |
| .interactive { | |
| @apply transition-all duration-200 ease-out; | |
| @apply hover:scale-105 active:scale-95; | |
| @apply focus:outline-none focus:ring-2 focus:ring-primary focus:ring-offset-2; | |
| } | |
| /* Better scrollbar styling */ | |
| .custom-scrollbar::-webkit-scrollbar { | |
| width: 6px; | |
| height: 6px; | |
| } | |
| .custom-scrollbar::-webkit-scrollbar-track { | |
| background: rgba(255, 255, 255, 0.1); | |
| border-radius: 3px; | |
| } | |
| .custom-scrollbar::-webkit-scrollbar-thumb { | |
| background: rgba(255, 255, 255, 0.3); | |
| border-radius: 3px; | |
| } | |
| .custom-scrollbar::-webkit-scrollbar-thumb:hover { | |
| background: rgba(255, 255, 255, 0.5); | |
| } | |
| /* Print styles */ | |
| @media print { | |
| .dot-background-text, | |
| .dot-background-heading { | |
| color: black ; | |
| text-shadow: none ; | |
| } | |
| .glass-card, | |
| .glass-section, | |
| .glass-section-alt, | |
| .glass-navbar { | |
| background: white ; | |
| backdrop-filter: none ; | |
| border: 1px solid #ccc ; | |
| } | |
| .hover-lift:hover { | |
| transform: none ; | |
| } | |
| } | |
| /* Dark mode specific enhancements */ | |
| @media (prefers-color-scheme: dark) { | |
| :root { | |
| color-scheme: dark; | |
| } | |
| } | |
| /* Final performance optimizations */ | |
| .will-change-transform { | |
| will-change: transform; | |
| } | |
| .will-change-opacity { | |
| will-change: opacity; | |
| } | |
| .will-change-auto { | |
| will-change: auto; | |
| } | |
| /* Ensure proper stacking context */ | |
| .stack-context { | |
| transform: translateZ(0); | |
| isolation: isolate; | |
| /* Glass Overlay System - Enhanced Layering */ | |
| .glass-overlay { | |
| position: relative; | |
| will-change: transform, opacity; | |
| transform: translateZ(0); | |
| isolation: isolate; | |
| /* Ensure proper stacking context */ | |
| z-index: 5; | |
| } | |
| /* Enhanced glass morphism effects with proper layering */ | |
| .glass-overlay::before { | |
| content: ''; | |
| position: absolute; | |
| inset: 0; | |
| border-radius: inherit; | |
| background: linear-gradient( | |
| 135deg, | |
| rgba(255, 255, 255, 0.1) 0%, | |
| rgba(255, 255, 255, 0.05) 50%, | |
| rgba(255, 255, 255, 0.02) 100% | |
| ); | |
| z-index: -1; | |
| opacity: 0.8; | |
| } | |
| /* Glass overlay variants - Mobile First */ | |
| .glass-overlay--light { | |
| backdrop-filter: blur(4px) saturate(105%); | |
| -webkit-backdrop-filter: blur(4px) saturate(105%); | |
| background: rgba(0, 0, 0, 0.03); | |
| border: 1px solid rgba(255, 255, 255, 0.06); | |
| } | |
| .glass-overlay--medium { | |
| backdrop-filter: blur(6px) saturate(110%); | |
| -webkit-backdrop-filter: blur(6px) saturate(110%); | |
| background: rgba(0, 0, 0, 0.08); | |
| border: 1px solid rgba(255, 255, 255, 0.08); | |
| } | |
| .glass-overlay--heavy { | |
| backdrop-filter: blur(8px) saturate(115%); | |
| -webkit-backdrop-filter: blur(8px) saturate(115%); | |
| background: rgba(0, 0, 0, 0.15); | |
| border: 1px solid rgba(255, 255, 255, 0.1); | |
| } | |
| /* Tablet glass effects */ | |
| @media (min-width: 768px) { | |
| .glass-overlay--light { | |
| backdrop-filter: blur(6px) saturate(108%); | |
| -webkit-backdrop-filter: blur(6px) saturate(108%); | |
| background: rgba(0, 0, 0, 0.04); | |
| border: 1px solid rgba(255, 255, 255, 0.07); | |
| } | |
| .glass-overlay--medium { | |
| backdrop-filter: blur(10px) saturate(115%); | |
| -webkit-backdrop-filter: blur(10px) saturate(115%); | |
| background: rgba(0, 0, 0, 0.12); | |
| border: 1px solid rgba(255, 255, 255, 0.1); | |
| } | |
| .glass-overlay--heavy { | |
| backdrop-filter: blur(14px) saturate(125%); | |
| -webkit-backdrop-filter: blur(14px) saturate(125%); | |
| background: rgba(0, 0, 0, 0.2); | |
| border: 1px solid rgba(255, 255, 255, 0.13); | |
| } | |
| } | |
| /* Desktop glass effects */ | |
| @media (min-width: 1024px) { | |
| .glass-overlay--light { | |
| backdrop-filter: blur(8px) saturate(110%); | |
| -webkit-backdrop-filter: blur(8px) saturate(110%); | |
| background: rgba(0, 0, 0, 0.05); | |
| border: 1px solid rgba(255, 255, 255, 0.08); | |
| } | |
| .glass-overlay--medium { | |
| backdrop-filter: blur(12px) saturate(120%); | |
| -webkit-backdrop-filter: blur(12px) saturate(120%); | |
| background: rgba(0, 0, 0, 0.15); | |
| border: 1px solid rgba(255, 255, 255, 0.12); | |
| } | |
| .glass-overlay--heavy { | |
| backdrop-filter: blur(16px) saturate(130%); | |
| -webkit-backdrop-filter: blur(16px) saturate(130%); | |
| background: rgba(0, 0, 0, 0.25); | |
| border: 1px solid rgba(255, 255, 255, 0.15); | |
| } | |
| } | |
| /* Layering system classes */ | |
| .layer-background { | |
| z-index: -10; | |
| } | |
| .layer-glass { | |
| z-index: 5; | |
| } | |
| .layer-content { | |
| z-index: 10; | |
| } | |
| .layer-overlay { | |
| z-index: 15; | |
| } | |
| .layer-modal { | |
| z-index: 20; | |
| } | |
| /* Enhanced hover effects for glass overlays */ | |
| .glass-overlay:hover { | |
| transform: translateY(-2px); | |
| transition: all 0.3s cubic-bezier(0.22, 1, 0.36, 1); | |
| } | |
| .glass-overlay:hover::before { | |
| opacity: 1; | |
| background: linear-gradient( | |
| 135deg, | |
| rgba(255, 255, 255, 0.15) 0%, | |
| rgba(255, 255, 255, 0.08) 50%, | |
| rgba(255, 255, 255, 0.03) 100% | |
| ); | |
| } | |
| /* Responsive glass overlay adjustments */ | |
| @media (max-width: 767px) { | |
| .glass-overlay { | |
| backdrop-filter: blur(4px) saturate(105%); | |
| -webkit-backdrop-filter: blur(4px) saturate(105%); | |
| } | |
| .glass-overlay:hover { | |
| transform: none; | |
| } | |
| /* Disable complex animations on touch devices */ | |
| .glass-overlay { | |
| transition: opacity 0.3s ease; | |
| } | |
| /* Simplified hover states for touch devices */ | |
| .glass-overlay:active { | |
| opacity: 0.9; | |
| transform: scale(0.98); | |
| } | |
| } | |
| /* Enhanced glass effects for high-resolution screens */ | |
| @media (min-width: 1440px) and (min-resolution: 2dppx) { | |
| .glass-overlay--light { | |
| backdrop-filter: blur(10px) saturate(112%); | |
| -webkit-backdrop-filter: blur(10px) saturate(112%); | |
| } | |
| .glass-overlay--medium { | |
| backdrop-filter: blur(15px) saturate(125%); | |
| -webkit-backdrop-filter: blur(15px) saturate(125%); | |
| } | |
| .glass-overlay--heavy { | |
| backdrop-filter: blur(20px) saturate(135%); | |
| -webkit-backdrop-filter: blur(20px) saturate(135%); | |
| } | |
| } | |
| /* Performance optimizations for glass overlays */ | |
| @media (prefers-reduced-motion: reduce) { | |
| .glass-overlay { | |
| transition: none; | |
| } | |
| .glass-overlay:hover { | |
| transform: none; | |
| } | |
| } | |
| /* Enhanced focus states for glass overlays */ | |
| .glass-overlay:focus-within { | |
| outline: 2px solid rgba(255, 255, 255, 0.3); | |
| outline-offset: 2px; | |
| } | |
| /* Glass overlay content spacing */ | |
| .glass-overlay .curved-section__content { | |
| padding: 1.5rem; | |
| } | |
| @media (min-width: 768px) { | |
| .glass-overlay .curved-section__content { | |
| padding: 2rem; | |
| } | |
| } | |
| @media (min-width: 1024px) { | |
| .glass-overlay .curved-section__content { | |
| padding: 3rem; | |
| } | |
| } | |
| /* Ensure proper text visibility within glass overlays */ | |
| .glass-overlay h1, | |
| .glass-overlay h2, | |
| .glass-overlay h3, | |
| .glass-overlay h4, | |
| .glass-overlay h5, | |
| .glass-overlay h6 { | |
| color: white ; | |
| text-shadow: | |
| 0 1px 3px rgba(0, 0, 0, 0.8), | |
| 0 2px 6px rgba(0, 0, 0, 0.6), | |
| 0 4px 12px rgba(0, 0, 0, 0.4); | |
| } | |
| .glass-overlay p, | |
| .glass-overlay span, | |
| .glass-overlay div, | |
| .glass-overlay a, | |
| .glass-overlay li { | |
| color: rgba(255, 255, 255, 0.95) ; | |
| text-shadow: | |
| 0 1px 2px rgba(0, 0, 0, 0.8), | |
| 0 2px 4px rgba(0, 0, 0, 0.5); | |
| } | |
| /* Glass overlay animation entrance */ | |
| @keyframes glass-overlay-entrance { | |
| from { | |
| opacity: 0; | |
| transform: translateY(20px) scale(0.98); | |
| backdrop-filter: blur(0px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateY(0) scale(1); | |
| backdrop-filter: blur(12px); | |
| } | |
| } | |
| .glass-overlay { | |
| animation: glass-overlay-entrance 0.6s cubic-bezier(0.22, 1, 0.36, 1) forwards; | |
| } | |
| /* Staggered animation for multiple glass overlays */ | |
| .glass-overlay:nth-child(1) { animation-delay: 0s; } | |
| .glass-overlay:nth-child(2) { animation-delay: 0.1s; } | |
| .glass-overlay:nth-child(3) { animation-delay: 0.2s; } | |
| .glass-overlay:nth-child(4) { animation-delay: 0.3s; } | |
| .glass-overlay:nth-child(5) { animation-delay: 0.4s; } | |
| .glass-overlay:nth-child(6) { animation-delay: 0.5s; } | |
| .glass-overlay:nth-child(7) { animation-delay: 0.6s; } | |
| .glass-overlay:nth-child(8) { animation-delay: 0.7s; } | |
| .glass-overlay:nth-child(9) { animation-delay: 0.8s; } | |
| .glass-overlay:nth-child(10) { animation-delay: 0.9s; } | |
| .glass-overlay:nth-child(11) { animation-delay: 1.0s; } | |
| .glass-overlay:nth-child(12) { animation-delay: 1.1s; } | |
| /* iPhone-style Navbar Enhancements */ | |
| .iPhone-nav { | |
| /* Override default notch nav styles for iPhone aesthetic */ | |
| } | |
| .iPhone-nav .relative { | |
| background: linear-gradient(135deg, rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.4)) ; | |
| border: 1px solid rgba(255, 255, 255, 0.15) ; | |
| border-radius: 9999px ; | |
| backdrop-filter: blur(20px) saturate(180%) ; | |
| -webkit-backdrop-filter: blur(20px) saturate(180%) ; | |
| } | |
| /* iPhone Dynamic Island effect */ | |
| @keyframes island-glow { | |
| 0%, 100% { | |
| box-shadow: | |
| 0 0 20px rgba(255, 255, 255, 0.1), | |
| 0 8px 32px rgba(0, 0, 0, 0.4), | |
| inset 0 1px 0 rgba(255, 255, 255, 0.1); | |
| } | |
| 50% { | |
| box-shadow: | |
| 0 0 30px rgba(255, 255, 255, 0.15), | |
| 0 12px 40px rgba(0, 0, 0, 0.5), | |
| inset 0 1px 0 rgba(255, 255, 255, 0.15); | |
| } | |
| } | |
| .iPhone-nav .relative { | |
| animation: island-glow 3s ease-in-out infinite; | |
| } | |
| /* Enhanced navbar transitions */ | |
| nav[class*="fixed"] { | |
| transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1); | |
| } | |
| /* Smooth scrolling enhancements for navbar */ | |
| @supports (scroll-behavior: smooth) { | |
| html { | |
| scroll-padding-top: 100px; /* Account for new navbar height */ | |
| } | |
| } | |
| /* Mobile navbar optimizations */ | |
| @media (max-width: 767px) { | |
| .iPhone-nav { | |
| display: none; /* Hide on mobile since we have the mobile menu */ | |
| } | |
| /* Enhance mobile navbar backdrop */ | |
| nav[class*="fixed"] > div { | |
| backdrop-filter: blur(12px) saturate(140%) ; | |
| -webkit-backdrop-filter: blur(12px) saturate(140%) ; | |
| height: 64px ; | |
| } | |
| /* Mobile-specific adjustments */ | |
| body { | |
| font-size: 14px; | |
| } | |
| /* Ensure proper spacing on very small screens */ | |
| @media (max-width: 375px) { | |
| .container { | |
| padding-left: 0.75rem; | |
| padding-right: 0.75rem; | |
| } | |
| } | |
| } | |
| /* Small tablet optimizations */ | |
| @media (min-width: 768px) and (max-width: 1023px) { | |
| nav[class*="fixed"] > div { | |
| height: 72px ; | |
| } | |
| } | |
| /* Large tablet optimizations */ | |
| @media (min-width: 1024px) and (max-width: 1279px) { | |
| .iPhone-nav .relative { | |
| padding: 0.5rem 1rem ; | |
| } | |
| nav[class*="fixed"] > div { | |
| height: 76px ; | |
| } | |
| } | |
| /* Desktop enhancements */ | |
| @media (min-width: 1025px) { | |
| .iPhone-nav .relative { | |
| backdrop-filter: blur(25px) saturate(200%) ; | |
| -webkit-backdrop-filter: blur(25px) saturate(200%) ; | |
| } | |
| } | |
| /* Focus states for iPhone-style navigation */ | |
| .iPhone-nav button:focus-visible { | |
| outline: 2px solid rgba(255, 255, 255, 0.3); | |
| outline-offset: 2px; | |
| border-radius: 9999px; | |
| } | |
| /* Active state enhancements */ | |
| .iPhone-nav button[aria-pressed="true"] { | |
| background: linear-gradient(135deg, rgba(255, 255, 255, 0.25), rgba(255, 255, 255, 0.15)) ; | |
| box-shadow: | |
| 0 2px 8px rgba(0, 0, 0, 0.2), | |
| inset 0 1px 0 rgba(255, 255, 255, 0.2) ; | |
| } | |
| } | |