/* Modern Section Transitions & Dividers */ /* Simple fade transition between sections */ .section-fade { position: relative; opacity: 0; transform: translateY(30px); transition: all 0.8s cubic-bezier(0.4, 0, 0.2, 1); } .section-fade.visible { opacity: 1; transform: translateY(0); } /* Subtle gradient overlay at section edges */ .section-gradient-top { position: absolute; top: 0; left: 0; width: 100%; height: 100px; background: linear-gradient(to bottom, rgba(255,255,255,1) 0%, rgba(255,255,255,0) 100%); pointer-events: none; z-index: 1; } .section-gradient-bottom { position: absolute; bottom: 0; left: 0; width: 100%; height: 100px; background: linear-gradient(to top, rgba(244,244,244,1) 0%, rgba(244,244,244,0) 100%); pointer-events: none; z-index: 1; } /* Animated Gradient Divider */ .gradient-divider { position: relative; height: 200px; margin: -100px 0; background: linear-gradient( 135deg, transparent 0%, rgba(15, 114, 181, 0.03) 25%, rgba(15, 114, 181, 0.08) 50%, rgba(15, 114, 181, 0.03) 75%, transparent 100% ); z-index: 5; overflow: hidden; } .gradient-divider::before { content: ''; position: absolute; top: 0; left: -100%; width: 200%; height: 100%; background: linear-gradient( 90deg, transparent, rgba(15, 114, 181, 0.2), transparent ); animation: shimmerDivider 8s infinite; } @keyframes shimmerDivider { 0% { transform: translateX(-100%); } 100% { transform: translateX(100%); } } /* Diagonal Section Transitions */ .diagonal-section { position: relative; padding: 120px 0 80px; margin-top: -50px; clip-path: polygon(0 50px, 100% 0, 100% 100%, 0 100%); } .diagonal-section-reverse { position: relative; padding: 120px 0 80px; margin-top: -50px; clip-path: polygon(0 0, 100% 50px, 100% 100%, 0 100%); } /* Blob Divider */ .blob-divider { position: absolute; bottom: -150px; left: 0; width: 100%; height: 300px; z-index: 5; pointer-events: none; } .blob-shape { position: absolute; width: 100%; height: 100%; background: linear-gradient(135deg, #0f72b5, #00406e); opacity: 0.1; border-radius: 40% 60% 60% 40% / 60% 30% 70% 40%; animation: morphBlob 20s ease-in-out infinite; } @keyframes morphBlob { 0%, 100% { border-radius: 40% 60% 60% 40% / 60% 30% 70% 40%; transform: translate(0, 0) scale(1); } 33% { border-radius: 60% 40% 30% 70% / 60% 70% 30% 40%; transform: translate(-30px, -20px) scale(1.1); } 66% { border-radius: 30% 70% 70% 30% / 30% 60% 40% 70%; transform: translate(30px, 20px) scale(0.9); } } /* Particle Bridge */ .particle-bridge { position: absolute; width: 100%; height: 200px; bottom: -100px; left: 0; z-index: 8; overflow: hidden; } .particle { position: absolute; width: 4px; height: 4px; background: #0f72b5; border-radius: 50%; opacity: 0.6; } @keyframes floatParticle { 0% { transform: translateY(100px) translateX(0); opacity: 0; } 10% { opacity: 0.6; } 90% { opacity: 0.6; } 100% { transform: translateY(-100px) translateX(100px); opacity: 0; } } /* Curved Section */ .curved-section { position: relative; padding-top: 100px; margin-top: -80px; } .curved-section::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 80px; background: inherit; border-radius: 0 0 50% 50% / 0 0 100% 100%; transform: scaleX(1.5); } /* Glass Transition */ .glass-transition { position: relative; margin: 50px 0; padding: 40px 0; background: linear-gradient( 135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 255, 255, 0.05) 100% ); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); border-top: 1px solid rgba(15, 114, 181, 0.1); border-bottom: 1px solid rgba(15, 114, 181, 0.1); } /* Zigzag Border */ .zigzag-top { position: relative; padding-top: 40px; } .zigzag-top::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 30px; background: linear-gradient( 135deg, transparent 33.33%, #0f72b5 33.33%, #0f72b5 66.66%, transparent 66.66% ); background-size: 30px 60px; opacity: 0.1; } /* Flowing Lines */ .flow-lines { position: absolute; width: 100%; height: 200px; bottom: -100px; left: 0; overflow: hidden; z-index: 5; } .flow-line { position: absolute; height: 2px; background: linear-gradient(90deg, transparent, #0f72b5, transparent); animation: flowLine 6s infinite; } .flow-line:nth-child(1) { top: 20%; animation-delay: 0s; width: 60%; } .flow-line:nth-child(2) { top: 40%; animation-delay: 1s; width: 80%; } .flow-line:nth-child(3) { top: 60%; animation-delay: 2s; width: 70%; } .flow-line:nth-child(4) { top: 80%; animation-delay: 3s; width: 90%; } @keyframes flowLine { 0% { transform: translateX(-100%); opacity: 0; } 50% { opacity: 1; } 100% { transform: translateX(200%); opacity: 0; } } /* Reveal Sections with Mask */ .section-reveal { position: relative; overflow: hidden; } .section-reveal::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient( 90deg, transparent, rgba(255, 255, 255, 0.4), transparent ); animation: revealMask 2s ease-out forwards; } @keyframes revealMask { to { left: 100%; } } /* Geometric Pattern Divider */ .geometric-divider { position: relative; height: 100px; margin: 40px 0; background-image: repeating-linear-gradient( 45deg, transparent, transparent 10px, rgba(15, 114, 181, 0.05) 10px, rgba(15, 114, 181, 0.05) 20px ), repeating-linear-gradient( -45deg, transparent, transparent 10px, rgba(15, 114, 181, 0.05) 10px, rgba(15, 114, 181, 0.05) 20px ); } /* Animated Border */ .animated-border { position: relative; padding: 80px 0; } .animated-border::before, .animated-border::after { content: ''; position: absolute; left: 0; width: 100%; height: 2px; background: linear-gradient( 90deg, transparent, #0f72b5 20%, #0f72b5 80%, transparent ); } .animated-border::before { top: 0; animation: borderSlide 4s infinite; } .animated-border::after { bottom: 0; animation: borderSlide 4s infinite reverse; } @keyframes borderSlide { 0%, 100% { transform: translateX(-100%); } 50% { transform: translateX(100%); } } /* Section Fade Transitions */ .fade-section { opacity: 0; transform: translateY(50px); transition: all 1s cubic-bezier(0.4, 0, 0.2, 1); } .fade-section.visible { opacity: 1; transform: translateY(0); } /* Parallax Background Sections */ .parallax-section { position: relative; min-height: 500px; display: flex; align-items: center; justify-content: center; overflow: hidden; } .parallax-bg { position: absolute; top: -20%; left: 0; width: 100%; height: 120%; background-image: linear-gradient(135deg, rgba(15, 114, 181, 0.05) 0%, transparent 100%); background-attachment: fixed; background-position: center; background-repeat: no-repeat; background-size: cover; will-change: transform; } /* Split Color Section */ .split-section { position: relative; overflow: hidden; } .split-section::before { content: ''; position: absolute; top: -50%; left: -50%; width: 200%; height: 200%; background: linear-gradient( 45deg, transparent 48%, rgba(15, 114, 181, 0.05) 49%, rgba(15, 114, 181, 0.05) 51%, transparent 52% ); animation: rotateSplit 20s linear infinite; } @keyframes rotateSplit { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }