/** * AGC AI Document Search Interface * Animation Styles */ /* Typing Animation */ .typing-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; margin-right: 4px; background-color: currentColor; animation: typing-animation 1.4s infinite ease-in-out both; } .typing-dot:nth-child(1) { animation-delay: 0s; } .typing-dot:nth-child(2) { animation-delay: 0.2s; } .typing-dot:nth-child(3) { animation-delay: 0.4s; } @keyframes typing-animation { 0%, 80%, 100% { transform: scale(0.6); opacity: 0.6; } 40% { transform: scale(1); opacity: 1; } } /* Hover Animations */ .hover-float { transition: transform 0.3s ease; } .hover-float:hover { transform: translateY(-5px); } .hover-grow { transition: transform 0.3s ease; } .hover-grow:hover { transform: scale(1.05); } .hover-shine { position: relative; overflow: hidden; } .hover-shine::before { position: absolute; top: 0; left: -75%; z-index: 2; display: block; content: ""; width: 50%; height: 100%; background: linear-gradient( to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.3) 100% ); transform: skewX(-25deg); transition: all 0.75s; } .hover-shine:hover::before { animation: shine 0.75s; } @keyframes shine { 100% { left: 125%; } } /* Page Transitions */ .page-transition-fade { animation: pageFade 0.5s ease-in-out; } @keyframes pageFade { 0% { opacity: 0; } 100% { opacity: 1; } } .page-transition-slide-up { animation: pageSlideUp 0.5s ease-in-out; } @keyframes pageSlideUp { 0% { opacity: 0; transform: translateY(20px); } 100% { opacity: 1; transform: translateY(0); } } /* Focus Effect */ .focus-effect { transition: all 0.3s ease; } .focus-effect:focus-within { box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.5); border-color: #3b82f6; } /* Loading Animations */ .loading-spinner { display: inline-block; width: 50px; height: 50px; border: 3px solid rgba(59, 130, 246, 0.3); border-radius: 50%; border-top-color: #3b82f6; animation: spin 1s linear infinite; } .loading-dots { display: inline-flex; align-items: center; } .loading-dots span { display: inline-block; width: 8px; height: 8px; margin: 0 2px; background-color: #3b82f6; border-radius: 50%; animation: loading-dots 1.4s infinite ease-in-out both; } .loading-dots span:nth-child(1) { animation-delay: 0s; } .loading-dots span:nth-child(2) { animation-delay: 0.2s; } .loading-dots span:nth-child(3) { animation-delay: 0.4s; } @keyframes loading-dots { 0%, 80%, 100% { transform: scale(0); } 40% { transform: scale(1); } } /* Card Hover Animations */ .card-hover-3d { transition: transform 0.3s ease, box-shadow 0.3s ease; transform-style: preserve-3d; } .card-hover-3d:hover { transform: translateY(-10px) rotateX(5deg); box-shadow: 0 15px 30px rgba(0, 0, 0, 0.1); } /* Button Animations */ .btn-pulse { position: relative; } .btn-pulse::after { content: ""; position: absolute; top: 0; left: 0; width: 100%; height: 100%; border-radius: inherit; background-color: currentColor; opacity: 0.6; z-index: -1; animation: pulse 2s cubic-bezier(0.25, 0.46, 0.45, 0.94) infinite; } @keyframes pulse { 0% { transform: scale(1); opacity: 0.6; } 50% { transform: scale(1.1); opacity: 0; } 100% { transform: scale(1); opacity: 0; } } /* Animation Utilities */ .rotate-90 { transform: rotate(90deg); } .scale-90 { transform: scale(0.9); } .scale-95 { transform: scale(0.95); } .scale-105 { transform: scale(1.05); } .scale-110 { transform: scale(1.1); } .scale-125 { transform: scale(1.25); } .animation-delay-100 { animation-delay: 100ms; } .animation-delay-200 { animation-delay: 200ms; } .animation-delay-300 { animation-delay: 300ms; } .animation-delay-500 { animation-delay: 500ms; } .animation-delay-700 { animation-delay: 700ms; } .animation-delay-1000 { animation-delay: 1000ms; } /* Animation for fade out */ @keyframes fadeOut { from { opacity: 1; } to { opacity: 0; } } .animate-fade-out { animation: fadeOut var(--transition-normal); }