@import "tailwindcss"; :root { --background: #F5EDD6; --foreground: #1C1C1C; --primary: #1A6B8A; --accent: #E87040; --card: #FFFFFF; --dark: #0E1A24; --sand: #FBF6EC; --muted: #9A9490; } @theme inline { --color-background: var(--background); --color-foreground: var(--foreground); --color-primary: var(--primary); --color-accent: var(--accent); --color-card: var(--card); --color-dark: var(--dark); --color-sand: var(--sand); --color-muted: var(--muted); --font-sans: var(--font-inter); --font-serif: var(--font-playfair); } *, *::before, *::after { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } body { background: var(--background); color: var(--foreground); font-family: var(--font-sans), sans-serif; } h1, h2, h3, h4, h5, h6 { font-family: var(--font-serif), serif; } /* ===================== KEYFRAME ANIMATIONS ===================== */ @keyframes shimmer-pass { 0% { left: -100%; } 100% { left: 200%; } } @keyframes float-y { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-10px); } } @keyframes gradient-pan { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } } @keyframes scroll-bounce { 0%, 100% { transform: translateY(0); opacity: 0.9; } 55% { transform: translateY(8px); opacity: 0.3; } } @keyframes fade-up { from { opacity: 0; transform: translateY(28px); } to { opacity: 1; transform: translateY(0); } } @keyframes fade-in { from { opacity: 0; } to { opacity: 1; } } @keyframes scale-in { from { opacity: 0; transform: scale(0.94); } to { opacity: 1; transform: scale(1); } } @keyframes line-grow { from { transform: scaleX(0); } to { transform: scaleX(1); } } /* ===================== ANIMATION UTILITIES ===================== */ .animate-fade-up { animation: fade-up 0.9s cubic-bezier(0.16, 1, 0.3, 1) both; } .animate-fade-in { animation: fade-in 1s ease both; } .animate-scale-in { animation: scale-in 0.8s cubic-bezier(0.16, 1, 0.3, 1) both; } .animate-float { animation: float-y 5s ease-in-out infinite; } .animate-gradient-pan { background-size: 400% 400%; animation: gradient-pan 10s ease infinite; } .animate-scroll-bounce { animation: scroll-bounce 2s ease-in-out infinite; } .delay-100 { animation-delay: 0.1s; } .delay-200 { animation-delay: 0.2s; } .delay-300 { animation-delay: 0.3s; } .delay-400 { animation-delay: 0.4s; } .delay-500 { animation-delay: 0.5s; } .delay-600 { animation-delay: 0.6s; } .delay-700 { animation-delay: 0.7s; } .delay-800 { animation-delay: 0.8s; } /* ===================== SCROLL REVEAL ===================== */ .reveal { opacity: 0; transform: translateY(32px); transition: opacity 0.8s cubic-bezier(0.16, 1, 0.3, 1), transform 0.8s cubic-bezier(0.16, 1, 0.3, 1); } .reveal.visible { opacity: 1; transform: translateY(0); } .reveal-stagger > * { opacity: 0; transform: translateY(24px); transition: opacity 0.7s cubic-bezier(0.16, 1, 0.3, 1), transform 0.7s cubic-bezier(0.16, 1, 0.3, 1); } .reveal-stagger.visible > *:nth-child(1) { opacity:1; transform:translateY(0); transition-delay:0s; } .reveal-stagger.visible > *:nth-child(2) { opacity:1; transform:translateY(0); transition-delay:0.1s; } .reveal-stagger.visible > *:nth-child(3) { opacity:1; transform:translateY(0); transition-delay:0.2s; } .reveal-stagger.visible > *:nth-child(4) { opacity:1; transform:translateY(0); transition-delay:0.3s; } .reveal-stagger.visible > *:nth-child(5) { opacity:1; transform:translateY(0); transition-delay:0.4s; } /* ===================== SHIMMER BUTTON ===================== */ .btn-shimmer { position: relative; overflow: hidden; } .btn-shimmer::before { content: ''; position: absolute; top: 0; left: -100%; width: 55%; height: 100%; background: linear-gradient( 90deg, transparent, rgba(255, 255, 255, 0.28), transparent ); transform: skewX(-15deg); animation: shimmer-pass 3.5s ease-in-out infinite; } /* ===================== CARD LIFT HOVER ===================== */ .card-lift { transition: transform 0.4s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.4s cubic-bezier(0.16, 1, 0.3, 1); } .card-lift:hover { transform: translateY(-6px); box-shadow: 0 24px 60px rgba(0, 0, 0, 0.1); } /* ===================== GRADIENT TEXT ===================== */ .gradient-text { background: linear-gradient(135deg, var(--primary) 0%, var(--accent) 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } /* ===================== SECTION DIVIDER ===================== */ .section-line { width: 48px; height: 3px; background: var(--accent); border-radius: 999px; }