/*========================================= * Fexr Enhanced Animations & Effects CSS * Modern, smooth, and performant animations =========================================*/ /* ========== SCROLL REVEAL ANIMATIONS ========== */ [data-reveal] { opacity: 0; transform: translateY(50px); transition: opacity 0.8s cubic-bezier(0.4, 0, 0.2, 1), transform 0.8s cubic-bezier(0.4, 0, 0.2, 1); } [data-reveal].revealed { opacity: 1; transform: translateY(0); } [data-reveal="fade-up"] { transform: translateY(60px); } [data-reveal="fade-down"] { transform: translateY(-60px); } [data-reveal="fade-left"] { transform: translateX(-60px); } [data-reveal="fade-right"] { transform: translateX(60px); } [data-reveal="zoom-in"] { transform: scale(0.8); } [data-reveal-child] { opacity: 0; transform: translateY(30px); transition: opacity 0.6s ease, transform 0.6s ease; } [data-reveal-child].revealed { opacity: 1; transform: translateY(0); } /* ========== FLOATING SHAPES ========== */ .floating-shapes-container { position: absolute; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; z-index: 0; } .floating-shape { position: absolute; border-radius: 50%; opacity: 0.1; filter: blur(60px); } .floating-shape.shape-1 { width: 400px; height: 400px; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); top: -200px; left: -200px; } .floating-shape.shape-2 { width: 300px; height: 300px; background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%); top: 20%; right: -150px; } .floating-shape.shape-3 { width: 350px; height: 350px; background: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%); bottom: 10%; left: 10%; } .floating-shape.shape-4 { width: 250px; height: 250px; background: linear-gradient(135deg, #43e97b 0%, #38f9d7 100%); top: 40%; right: 20%; } .floating-shape.shape-5 { width: 200px; height: 200px; background: linear-gradient(135deg, #fa709a 0%, #fee140 100%); bottom: -100px; right: -100px; } @keyframes float { 0%, 100% { transform: translate(0, 0) rotate(0deg) scale(1); } 25% { transform: translate(50px, -50px) rotate(90deg) scale(1.1); } 50% { transform: translate(-30px, -100px) rotate(180deg) scale(0.9); } 75% { transform: translate(-50px, -50px) rotate(270deg) scale(1.05); } } /* ========== GRADIENT ANIMATIONS ========== */ @keyframes gradientShift { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } } [data-gradient-animate] { background-size: 200% 200%; animation: gradientShift 15s ease infinite; } /* ========== CURSOR EFFECTS ========== */ .cursor-follower { display: none !important; /* Disabled per user preference */ } /* Default cursor restored per user preference */ @media (min-width: 1024px) { body { cursor: default; } a, button, .btn-one, .btn-two, .service__one-item { cursor: pointer; } } /* ========== SCROLL PROGRESS BAR ========== */ .scroll-progress { position: fixed; top: 0; left: 0; height: 3px; background: linear-gradient(90deg, #667eea 0%, #764ba2 100%); z-index: 9999; transition: width 0.1s ease; box-shadow: 0 2px 10px rgba(102, 126, 234, 0.5); } /* ========== ENHANCED CARD HOVER EFFECTS ========== */ .service__one-item, .service__two-item, .service__three-item { transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); transform-style: preserve-3d; will-change: transform; } .service__one-item::before, .service__two-item::before, .service__three-item::before { content: ''; position: absolute; top: -2px; left: -2px; right: -2px; bottom: -2px; background: linear-gradient(135deg, #667eea, #764ba2, #f093fb, #f5576c); background-size: 400% 400%; border-radius: inherit; z-index: -1; opacity: 0; transition: opacity 0.4s ease; animation: gradientShift 8s ease infinite; } .service__one-item:hover::before, .service__two-item:hover::before, .service__three-item:hover::before { opacity: 0.7; } .service__one-item:hover, .service__two-item:hover, .service__three-item:hover { transform: translateY(-10px); box-shadow: 0 20px 60px rgba(0, 0, 0, 0.15); } /* ========== ENHANCED BUTTON ANIMATIONS ========== */ .btn-one, .btn-two { position: relative; overflow: hidden; transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); will-change: transform; } .btn-one::before, .btn-two::before { content: ''; position: absolute; top: 50%; left: 50%; width: 0; height: 0; border-radius: 50%; background: rgba(255, 255, 255, 0.3); transform: translate(-50%, -50%); transition: width 0.6s ease, height 0.6s ease; } .btn-one:hover::before, .btn-two:hover::before { width: 300px; height: 300px; } .btn-one:hover, .btn-two:hover { transform: scale(1.05); box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2); } .btn-one:active, .btn-two:active { transform: scale(0.98); } /* ========== PARALLAX SECTIONS ========== */ [data-parallax] { will-change: transform; transition: transform 0.1s ease-out; } /* ========== STAGGER ANIMATIONS FOR LISTS ========== */ .features__one-right-item, .choose__us-area-list-item, .launch__club-item { opacity: 0; animation: fadeInUp 0.8s cubic-bezier(0.4, 0, 0.2, 1) forwards; } .features__one-right-item:nth-child(1), .choose__us-area-list-item:nth-child(1), .launch__club-item:nth-child(1) { animation-delay: 0.1s; } .features__one-right-item:nth-child(2), .choose__us-area-list-item:nth-child(2), .launch__club-item:nth-child(2) { animation-delay: 0.2s; } .features__one-right-item:nth-child(3), .choose__us-area-list-item:nth-child(3), .launch__club-item:nth-child(3) { animation-delay: 0.3s; } .features__one-right-item:nth-child(4), .choose__us-area-list-item:nth-child(4), .launch__club-item:nth-child(4) { animation-delay: 0.4s; } @keyframes fadeInUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } } /* ========== IMAGE HOVER EFFECTS ========== */ .portfolio__one-item-image, .service__two-item-image, .blog__one-item-image { overflow: hidden; position: relative; } .portfolio__one-item-image img, .service__two-item-image img, .blog__one-item-image img { transition: transform 0.6s cubic-bezier(0.4, 0, 0.2, 1); will-change: transform; } .portfolio__one-item:hover .portfolio__one-item-image img, .service__two-item:hover .service__two-item-image img, .blog__one-item:hover .blog__one-item-image img { transform: scale(1.1) rotate(2deg); } /* ========== LOADING ANIMATION ========== */ body:not(.loaded) { overflow: hidden; } body.loaded .theme-loader { animation: fadeOut 0.5s ease forwards; } @keyframes fadeOut { to { opacity: 0; visibility: hidden; } } /* ========== SMOOTH ENTRANCE FOR SECTIONS ========== */ .section-padding { animation: sectionFadeIn 1s ease-in-out; } @keyframes sectionFadeIn { from { opacity: 0; } to { opacity: 1; } } /* ========== GLOWING TEXT EFFECT ========== */ .subtitle-one, .subtitle-two, .subtitle-three { position: relative; display: inline-block; animation: glow 2s ease-in-out infinite alternate; } @keyframes glow { from { text-shadow: 0 0 5px rgba(102, 126, 234, 0.3), 0 0 10px rgba(102, 126, 234, 0.2); } to { text-shadow: 0 0 10px rgba(102, 126, 234, 0.5), 0 0 20px rgba(102, 126, 234, 0.3), 0 0 30px rgba(102, 126, 234, 0.2); } } /* ========== COUNTER ANIMATION ========== */ .counter { display: inline-block; transform-style: preserve-3d; } .counter.counting { animation: counterPulse 0.3s ease; } @keyframes counterPulse { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.1); } } /* ========== RESPONSIVE ADJUSTMENTS ========== */ @media (max-width: 1024px) { .floating-shape { display: none; } .cursor-follower { display: none; } .service__one-item, .service__two-item, .service__three-item { transform: none !important; } } @media (max-width: 768px) { [data-reveal] { transform: translateY(30px); } .btn-one, .btn-two { transform: none !important; } } /* ========== SMOOTH PAGE TRANSITIONS ========== */ .page-transition { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); z-index: 99999; transform: translateY(-100%); transition: transform 0.6s cubic-bezier(0.4, 0, 0.2, 1); } .page-transition.active { transform: translateY(0); } /* ========== MICRO-INTERACTIONS ========== */ .simple-btn, a[class*="btn"] { position: relative; display: inline-flex; align-items: center; gap: 5px; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); } .simple-btn i, a[class*="btn"] i { transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1); } .simple-btn:hover i, a[class*="btn"]:hover i { transform: translateX(5px); } /* ========== NAVBAR ANIMATION ON SCROLL ========== */ .header__area.scrolled { animation: slideDown 0.3s ease; box-shadow: 0 5px 30px rgba(0, 0, 0, 0.1); } @keyframes slideDown { from { transform: translateY(-100%); } to { transform: translateY(0); } } /* ========== BRAND LOGO PULSE ========== */ .header__area-menubar-left-logo img { transition: transform 0.3s ease; } .header__area-menubar-left-logo:hover img { animation: logoPulse 1s ease infinite; } @keyframes logoPulse { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.05); } } /* ========== FLOATING ACTION BUTTON ========== */ .floating-action-btn { position: fixed; bottom: 30px; right: 30px; width: 60px; height: 60px; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); border-radius: 50%; display: flex; align-items: center; justify-content: center; color: white; font-size: 24px; box-shadow: 0 10px 30px rgba(102, 126, 234, 0.4); cursor: pointer; z-index: 999; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); animation: floatingPulse 3s ease-in-out infinite; text-decoration: none; } .floating-action-btn:hover { transform: scale(1.1) translateY(-5px); box-shadow: 0 15px 40px rgba(102, 126, 234, 0.6); background: linear-gradient(135deg, #764ba2 0%, #667eea 100%); } .floating-action-btn i { animation: iconBounce 2s ease-in-out infinite; } @keyframes floatingPulse { 0%, 100% { box-shadow: 0 10px 30px rgba(102, 126, 234, 0.4); } 50% { box-shadow: 0 10px 40px rgba(102, 126, 234, 0.7); } } @keyframes iconBounce { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-3px); } } /* ========== LIVE STATS BADGE ========== */ .live-stats-badge { position: fixed; top: 100px; right: 30px; background: rgba(255, 255, 255, 0.95); backdrop-filter: blur(10px); padding: 15px 20px; border-radius: 30px; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1); z-index: 998; animation: slideInRight 0.8s ease-out; border: 2px solid rgba(102, 126, 234, 0.2); } .dark-mode .live-stats-badge { background: rgba(30, 30, 30, 0.95); border-color: rgba(102, 126, 234, 0.3); } .live-stats-badge .pulse-dot { width: 8px; height: 8px; background: #43e97b; border-radius: 50%; display: inline-block; margin-right: 8px; animation: pulse 2s ease-in-out infinite; } .live-stats-badge .stats-text { font-size: 13px; font-weight: 600; color: #333; display: inline-block; } .dark-mode .live-stats-badge .stats-text { color: #fff; } @keyframes pulse { 0%, 100% { opacity: 1; transform: scale(1); } 50% { opacity: 0.5; transform: scale(1.2); } } @keyframes slideInRight { from { transform: translateX(100px); opacity: 0; } to { transform: translateX(0); opacity: 1; } } /* ========== FEATURE BADGES ========== */ .feature-badge { display: inline-block; padding: 8px 16px; background: linear-gradient(135deg, rgba(102, 126, 234, 0.1), rgba(118, 75, 162, 0.1)); border: 1px solid rgba(102, 126, 234, 0.3); border-radius: 20px; font-size: 12px; font-weight: 600; color: #667eea; margin: 5px; transition: all 0.3s ease; } .feature-badge:hover { background: linear-gradient(135deg, #667eea, #764ba2); color: white; transform: translateY(-2px); box-shadow: 0 5px 15px rgba(102, 126, 234, 0.3); } /* ========== ENHANCED SECTION DIVIDERS ========== */ .section-divider { width: 100px; height: 4px; background: linear-gradient(90deg, #667eea, #764ba2); margin: 30px auto; border-radius: 2px; animation: expandWidth 1s ease-out; } @keyframes expandWidth { from { width: 0; } to { width: 100px; } } /* ========== MOBILE OPTIMIZATIONS ========== */ @media (max-width: 768px) { .floating-action-btn { width: 50px; height: 50px; bottom: 20px; right: 20px; font-size: 20px; } .live-stats-badge { top: auto; bottom: 90px; right: 20px; padding: 10px 15px; font-size: 11px; } } /* ========== HERO H1 GLITCH WORD ========== */ .glitch-word { position: relative; display: inline-block; } .glitch-word::before { content: attr(data-glitch); position: absolute; top: 0; left: 0; color: #ffffff; font: inherit; line-height: inherit; white-space: nowrap; background: #05050c; opacity: 0; clip-path: inset(0 100% 0 0); pointer-events: none; animation: glitch-word-reveal 9s steps(1) infinite; animation-delay: -7.56s; /* start at 84% so first glitch fires ~immediately */ } @keyframes glitch-word-reveal { /* Idle */ 0%, 84% { opacity: 0; clip-path: inset(0 100% 0 0); transform: none; text-shadow: none; } /* Wipe in — left edge scans rightward */ 85% { opacity: 1; clip-path: inset(0 68% 0 0); transform: skewX(-5deg) translateX(-4px); text-shadow: 5px 0 rgba(255,0,255,.9), -3px 0 rgba(0,255,255,.9); } 86% { opacity: 1; clip-path: inset(0 32% 0 0); transform: skewX(3deg) translateX(3px); text-shadow: 4px 0 rgba(255,0,255,.8), -3px 0 rgba(0,255,255,.8); } 87% { opacity: 1; clip-path: inset(0 0 0 0); transform: skewX(-1deg); text-shadow: 2px 0 rgba(255,0,255,.7), -2px 0 rgba(0,255,255,.7); } /* Hold — scanline glitch flickers */ 88% { opacity: 1; clip-path: inset(25% 0 45% 0); transform: translateX(5px); text-shadow: 7px 0 rgba(255,0,255,.9), -3px 0 rgba(0,255,255,.9); } 89% { opacity: 1; clip-path: inset(0 0 0 0); transform: none; text-shadow: 2px 0 rgba(255,0,255,.7), -2px 0 rgba(0,255,255,.7); } 90% { opacity: 1; clip-path: inset(55% 0 5% 0); transform: translateX(-5px) skewX(6deg); text-shadow: 8px 0 rgba(255,0,255,.9), -5px 0 rgba(0,255,255,.9); } 91% { opacity: 1; clip-path: inset(0 0 0 0); transform: none; text-shadow: 2px 0 rgba(255,0,255,.7), -2px 0 rgba(0,255,255,.7); } /* Wipe out — right edge scans rightward */ 92% { opacity: 1; clip-path: inset(0 0 0 22%); transform: skewX(4deg) translateX(3px); text-shadow: 5px 0 rgba(255,0,255,.8), -3px 0 rgba(0,255,255,.8); } 93% { opacity: 1; clip-path: inset(0 0 0 65%); transform: skewX(-3deg); text-shadow: 3px 0 rgba(255,0,255,.7), -2px 0 rgba(0,255,255,.7); } 94%, 100% { opacity: 0; clip-path: inset(0 0 0 100%); transform: none; text-shadow: none; } } /* ========== TOOLTIP EFFECTS ========== */ .tooltip-wrapper { position: relative; display: inline-block; } .tooltip-wrapper::after { content: attr(data-tooltip); position: absolute; bottom: 125%; left: 50%; transform: translateX(-50%); padding: 8px 12px; background: rgba(0, 0, 0, 0.9); color: white; font-size: 12px; border-radius: 6px; white-space: nowrap; opacity: 0; pointer-events: none; transition: opacity 0.3s ease; z-index: 1000; } .tooltip-wrapper:hover::after { opacity: 1; }