/* Custom animations and styles for Kelly Green website - Crosby Fluid Inspired */ /* Font imports */ @import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@300;400;500;600;700&display=swap'); /* Avian Regular font for headings */ @font-face { font-family: 'Avian Regular'; src: url('../../Fonts/AvianRegular/Avian Regular.ttf') format('truetype'); font-weight: normal; font-style: normal; font-display: swap; } /* Body text styling - applies to all text except headers */ body { font-family: 'Montserrat', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; } /* Headers use Avian Regular with default weight only */ h1, h2, h3, h4, h5, h6 { font-family: 'Avian Regular', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; font-weight: normal !important; } /* Fade in animation */ @keyframes fadeIn { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .animate-fade-in { animation: fadeIn 0.6s ease-out forwards; } /* Fluid design elements */ .fluid-section { position: relative; overflow: hidden; } .fluid-curve { position: absolute; bottom: 0; left: 0; width: 100%; overflow: hidden; line-height: 0; transform: rotate(180deg); } .fluid-curve svg { position: relative; display: block; width: calc(100% + 1.3px); height: 120px; } /* Modern typography */ .fluid-heading { font-weight: 300; letter-spacing: -0.02em; line-height: 1.1; } .fluid-heading .accent { font-weight: 700; background: linear-gradient(135deg, #8B9B7A, #C17A5B); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } /* Enhanced button styles */ .btn-fluid { padding: 1rem 2.5rem; border-radius: 50px; font-weight: 600; text-transform: none; letter-spacing: 0.025em; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); box-shadow: 0 4px 14px 0 rgba(139, 155, 122, 0.15); } .btn-fluid:hover { transform: translateY(-2px); box-shadow: 0 8px 25px 0 rgba(139, 155, 122, 0.25); } /* Card enhancements */ .fluid-card { border-radius: 24px; border: 1px solid rgba(139, 155, 122, 0.1); transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); background: rgba(255, 255, 255, 0.8); backdrop-filter: blur(10px); } .fluid-card:hover { transform: translateY(-8px); box-shadow: 0 20px 40px rgba(139, 155, 122, 0.1); border-color: rgba(139, 155, 122, 0.2); } /* Hover effects for cards */ .card-hover { transition: all 0.3s ease; } .card-hover:hover { transform: translateY(-5px); box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); } /* Gradient text effect */ .gradient-text { background: linear-gradient(135deg, #8B9B7A, #6B785F); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } /* Custom button styles */ .btn-primary { background: linear-gradient(135deg, #8B9B7A, #6B785F); border: none; transition: all 0.3s ease; } .btn-primary:hover { background: linear-gradient(135deg, #6B785F, #8B9B7A); transform: translateY(-2px); box-shadow: 0 10px 20px rgba(139, 155, 122, 0.3); } .btn-outline { border: 2px solid #8B9B7A; color: #8B9B7A; background: transparent; transition: all 0.3s ease; } .btn-outline:hover { background: #8B9B7A; color: white; transform: translateY(-2px); } /* Loading spinner */ @keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } .spinner { animation: spin 1s linear infinite; } /* Parallax effect for hero sections */ .parallax { background-attachment: fixed; background-position: center; background-repeat: no-repeat; background-size: cover; } /* Smooth scroll behavior */ html { scroll-behavior: smooth; } /* Custom scrollbar */ ::-webkit-scrollbar { width: 8px; } ::-webkit-scrollbar-track { background: #f1f1f1; } ::-webkit-scrollbar-thumb { background: #8B9B7A; border-radius: 4px; } ::-webkit-scrollbar-thumb:hover { background: #6B785F; } /* Focus styles for accessibility */ button:focus, a:focus, input:focus, textarea:focus { outline: 2px solid #8B9B7A; outline-offset: 2px; } /* Image hover effects */ .image-hover { overflow: hidden; transition: all 0.3s ease; } .image-hover img { transition: transform 0.3s ease; } .image-hover:hover img { transform: scale(1.05); } /* Text reveal animation */ @keyframes textReveal { from { opacity: 0; transform: translateY(50px); } to { opacity: 1; transform: translateY(0); } } .text-reveal { animation: textReveal 0.8s ease-out forwards; } /* Pulse animation for important elements */ @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.7; } } .pulse-subtle { animation: pulse 2s infinite; } /* Mobile-specific improvements */ @media (max-width: 768px) { .mobile-text-center { text-align: center; } .mobile-full-width { width: 100%; } .mobile-spacing { margin-bottom: 2rem; } } /* Print styles */ @media print { .no-print { display: none !important; } body { font-size: 12pt; line-height: 1.4; } h1, h2, h3 { page-break-after: avoid; } } /* High contrast mode support */ @media (prefers-contrast: high) { .bg-gray-50 { background-color: white; } .text-gray-600 { color: black; } .border-gray-200 { border-color: black; } } /* Reduced motion for accessibility */ @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; } } /* Dark mode support (for future implementation) */ @media (prefers-color-scheme: dark) { .dark-mode-bg { background-color: #1a1a1a; color: white; } .dark-mode-text { color: #e5e5e5; } .dark-mode-border { border-color: #333; } } /* Utility classes */ .glass-effect { background: rgba(255, 255, 255, 0.1); backdrop-filter: blur(10px); border: 1px solid rgba(255, 255, 255, 0.2); } .text-shadow { text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.1); } .box-shadow-soft { box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); } .box-shadow-strong { box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); } /* Loading states */ .loading-skeleton { background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%); background-size: 200% 100%; animation: loading 1.5s infinite; } @keyframes loading { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } } /* Notification styles */ .notification-enter { transform: translateX(100%); opacity: 0; } .notification-enter-active { transform: translateX(0); opacity: 1; transition: all 0.3s ease; } .notification-exit { transform: translateX(0); opacity: 1; } .notification-exit-active { transform: translateX(100%); opacity: 0; transition: all 0.3s ease; }