/* Enhanced animations and visual effects for TN Medical Connect */ /* Fade in animations */ .fade-in { opacity: 0; animation: fadeIn 0.8s ease-in forwards; } .fade-in-up { opacity: 0; transform: translateY(20px); animation: fadeInUp 0.8s ease-out forwards; } .fade-in-left { opacity: 0; transform: translateX(-20px); animation: fadeInLeft 0.8s ease-out forwards; } .fade-in-right { opacity: 0; transform: translateX(20px); animation: fadeInRight 0.8s ease-out forwards; } /* Staggered animations for multiple elements */ .stagger-fade-in > * { opacity: 0; animation: fadeIn 0.5s ease-out forwards; } .stagger-fade-in > *:nth-child(1) { animation-delay: 0.1s; } .stagger-fade-in > *:nth-child(2) { animation-delay: 0.2s; } .stagger-fade-in > *:nth-child(3) { animation-delay: 0.3s; } .stagger-fade-in > *:nth-child(4) { animation-delay: 0.4s; } .stagger-fade-in > *:nth-child(5) { animation-delay: 0.5s; } .stagger-fade-in > *:nth-child(6) { animation-delay: 0.6s; } /* Pulse animation for attention-grabbing elements */ .pulse { animation: pulse 2s infinite; } /* Button hover effects */ .btn-hover-effect { transition: all 0.3s ease; position: relative; overflow: hidden; z-index: 1; } .btn-hover-effect:after { content: ''; position: absolute; bottom: 0; left: 0; width: 100%; height: 100%; background-color: rgba(255, 255, 255, 0.1); z-index: -2; } .btn-hover-effect:before { content: ''; position: absolute; bottom: 0; left: 0; width: 0%; height: 100%; background-color: rgba(255, 255, 255, 0.2); transition: all 0.3s; z-index: -1; } .btn-hover-effect:hover:before { width: 100%; } /* Grow on hover effect for cards */ .grow-on-hover { transition: all 0.3s ease; } .grow-on-hover:hover { transform: scale(1.03); box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1); } /* Interactive card flipping effect */ .flip-card { perspective: 1000px; background-color: transparent; width: 100%; height: 250px; } .flip-card-inner { position: relative; width: 100%; height: 100%; text-align: center; transition: transform 0.6s; transform-style: preserve-3d; } .flip-card:hover .flip-card-inner { transform: rotateY(180deg); } .flip-card-front, .flip-card-back { position: absolute; width: 100%; height: 100%; backface-visibility: hidden; border-radius: 0.5rem; } .flip-card-front { background-color: #f0f9ff; color: #1e40af; display: flex; flex-direction: column; justify-content: center; align-items: center; padding: 1.5rem; } .flip-card-back { background-color: #1e40af; color: white; transform: rotateY(180deg); display: flex; flex-direction: column; justify-content: center; align-items: center; padding: 1.5rem; } /* Progress bars with animation */ .progress-bar { height: 8px; background-color: #e5e7eb; border-radius: 4px; overflow: hidden; } .progress-bar-fill { height: 100%; border-radius: 4px; background-color: #38b2ac; transition: width 1s ease-in-out; } /* Highlighted call-to-action with pulsing glow */ .cta-highlight { position: relative; } .cta-highlight::after { content: ''; position: absolute; top: -5px; left: -5px; right: -5px; bottom: -5px; border-radius: inherit; border: 2px solid #38b2ac; animation: pulseBorder 2s infinite; pointer-events: none; } /* Timeline design for sequential information */ .timeline { position: relative; max-width: 1200px; margin: 0 auto; } .timeline::after { content: ''; position: absolute; width: 2px; background-color: #38b2ac; top: 0; bottom: 0; left: 50%; margin-left: -1px; } .timeline-container { padding: 10px 40px; position: relative; background-color: inherit; width: calc(50% - 40px); } .timeline-container::after { content: ''; position: absolute; width: 16px; height: 16px; right: -8px; background-color: white; border: 2px solid #38b2ac; top: 15px; border-radius: 50%; z-index: 1; } .timeline-left { left: 0; } .timeline-right { left: 50%; } .timeline-left::after { right: -8px; } .timeline-right::after { left: -8px; } .timeline-content { padding: 20px; background-color: white; position: relative; border-radius: 6px; box-shadow: 0 2px 5px rgba(0,0,0,0.1); } /* Keyframes definitions */ @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } @keyframes fadeInUp { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } @keyframes fadeInLeft { from { opacity: 0; transform: translateX(-20px); } to { opacity: 1; transform: translateX(0); } } @keyframes fadeInRight { from { opacity: 0; transform: translateX(20px); } to { opacity: 1; transform: translateX(0); } } @keyframes pulse { 0% { transform: scale(1); } 50% { transform: scale(1.05); } 100% { transform: scale(1); } } @keyframes pulseBorder { 0% { opacity: 0.7; } 50% { opacity: 0.3; } 100% { opacity: 0.7; } } /* Modern toggle switch */ .toggle-switch { position: relative; display: inline-block; width: 52px; height: 26px; } .toggle-switch input { opacity: 0; width: 0; height: 0; } .toggle-slider { position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0; background-color: #ccc; transition: .4s; border-radius: 26px; } .toggle-slider:before { position: absolute; content: ""; height: 18px; width: 18px; left: 4px; bottom: 4px; background-color: white; transition: .4s; border-radius: 50%; } input:checked + .toggle-slider { background-color: #38b2ac; } input:checked + .toggle-slider:before { transform: translateX(26px); } /* Custom scrollbar */ ::-webkit-scrollbar { width: 8px; height: 8px; } ::-webkit-scrollbar-track { background: rgba(0,0,0,0.05); border-radius: 10px; } ::-webkit-scrollbar-thumb { background: rgba(56, 178, 172, 0.5); border-radius: 10px; } ::-webkit-scrollbar-thumb:hover { background: rgba(56, 178, 172, 0.7); } /* Dark mode styles */ .dark-mode { background-color: #121e2d; color: #e5e7eb; } .dark-mode .bg-white { background-color: #1f2937; } .dark-mode .text-gray-800 { color: #f3f4f6; } .dark-mode .text-gray-600, .dark-mode .text-gray-700 { color: #d1d5db; } .dark-mode .border-gray-200, .dark-mode .border-gray-100 { border-color: #374151; } .dark-mode .bg-gray-50 { background-color: #263240; } .dark-mode .bg-gray-100 { background-color: #1f2937; } /* Testimonial carousel styles */ .testimonial-carousel { overflow: hidden; position: relative; } .testimonial-track { display: flex; transition: transform 0.5s ease-in-out; } .testimonial-slide { flex: 0 0 100%; max-width: 100%; padding: 20px; box-sizing: border-box; } .testimonial-navigation { display: flex; justify-content: center; margin-top: 20px; } .testimonial-dot { width: 10px; height: 10px; border-radius: 50%; background-color: #cbd5e0; margin: 0 5px; cursor: pointer; } .testimonial-dot.active { background-color: #38b2ac; } /* Tooltip styles */ .tooltip { position: relative; display: inline-block; } .tooltip .tooltip-text { visibility: hidden; width: 120px; background-color: #1e40af; color: #fff; text-align: center; border-radius: 6px; padding: 5px; position: absolute; z-index: 1; bottom: 125%; left: 50%; margin-left: -60px; opacity: 0; transition: opacity 0.3s; } .tooltip .tooltip-text::after { content: ""; position: absolute; top: 100%; left: 50%; margin-left: -5px; border-width: 5px; border-style: solid; border-color: #1e40af transparent transparent transparent; } .tooltip:hover .tooltip-text { visibility: visible; opacity: 1; } /* Interactive features for accessible UI */ .focus-indicator:focus { outline: none; box-shadow: 0 0 0 3px rgba(56, 178, 172, 0.5); border-radius: 0.375rem; } /* Interactive stats counter */ .counter-animation { display: inline-block; font-weight: bold; } /* === INTERSECTION-ACTIVATED ANIMATIONS === */ /* Fade visibility when element comes into view */ .fade-in, .fade-in-up, .fade-in-left, .fade-in-right { opacity: 0; transform: translateY(20px); /* fallback default */ transition: opacity 0.8s ease-out, transform 0.8s ease-out; } .visible { opacity: 1 !important; transform: translateY(0) !important; } /* Optional class if you want to use float-specific animation */ .animate-float-in { opacity: 0; transform: translateY(15px); animation: fadeInUp 0.8s ease-out forwards; } /* Delay utilities */ .delay-100 { animation-delay: 0.1s; } .delay-300 { animation-delay: 0.3s; }